如何统计出 PHP 自带系统函数使用情况?

 灿烂的胖羊羊 发布于 2022-11-30 12:28

如何统计出 PHP 自带系统函数使用情况?

即除去自定义函数外,统计出 PHP 脚本自带函数使用频率。例如:

count 1000
substr 999
time 990
.....

P.S. 觉得没意义的人可以不用回答,我个人认为用的频率高的函数,说明更应该多看看,多学习下,对于初学者很有用啊。暂时觉得可以统计常见的wordpress drupal等程序看看函数使用情况。

6 个回答
  • 也许能用Google的Big Query去统计github上的php代码。

    真的去写了个bigquery:

    #standardSQL
    CREATE TEMPORARY FUNCTION parseFunction(src STRING)
    RETURNS ARRAY<STRING>
    LANGUAGE js AS """
      var result = [];
      var regex = /(\\w+?)(?:\\()/g;
      var match;
      while (match = regex.exec(src)) {
        result.push(match[1]);
      }
      return result;
    """;
    
    SELECT
      function_name,
      COUNT(function_name) AS count
    FROM (
      SELECT
        parseFunction(c.content) AS function_name
      FROM
        `bigquery-public-data.github_repos.contents` c
      JOIN (
        SELECT
          id
        FROM
          `bigquery-public-data.github_repos.files`
          where path like '%.php'
      ) f
      ON f.id = c.id) f2,
      UNNEST(function_name) AS function_name
    WHERE
      function_name IS NOT NULL
    GROUP BY
      function_name
    ORDER BY
      count DESC
    LIMIT
      20

    然而我没钱跑,估计要10刀。

    补充,发现有两个小点的数据集, bigquery-public-data.github_repos.sample_filesbigquery-public-data.github_repos.sample_contents,也有30.2GB内容,结果参考一下。

    代码和原始结果在Gist

    parseFunction不完善,忽略掉语言的关键字、自定义函数就是结果了:),下面开头是一部分:

    函数 数量
    isset 175229
    empty 99502
    count 60322
    substr 44073
    is_array 37004
    sprintf 36639
    unset 32378
    strlen 32261
    chr 29128
    str_replace 26654
    preg_match 24955
    trim 24159
    strpos 22880
    explode 21990
    in_array 21797
    array_merge 20610
    implode 19293
    strtolower 17261
    function_exists 15598
    dirname 14930
    require_once 14572
    preg_replace 14560
    class_exists 13500
    list 13455
    is_null 13286
    array_key_exists 13245
    file_exists 13216
    pack 11704
    is_string 11634
    date 11366
    header 11000
    2022-11-30 12:29 回答
  • 怎么会有这么无聊的需求?

    先定义一个数组列表文件,把默认函数名全部录入。然后把PHP文件源码当文本,查找匹配,统计。

    2022-11-30 12:29 回答
  • 毫无意义,每个项目的业务逻辑都不一样, 实现的方式也都是多边的, 完全跟开发者的开发风格有关系, 这种统计没用吧

    2022-11-30 12:29 回答
  • 你修改php源代码,不然你说怎么实现

    2022-11-30 12:29 回答
  • 奇葩的问题,我也想知道。
    也可以换一个问题,如何爬取所有github上的php源码,然后进行统计,按照自带函数使用频率进行排序?
    感觉这是个了不起的事

    2022-11-30 12:29 回答
  • 实际上phpstrom就能做出这个事情,find in path 能找出某个东西,用了多少次数。
    如果弄成程序的话,也可以做匹配

    2022-11-30 12:29 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有