如何统计出 PHP 自带系统函数使用情况?
PHPz
PHPz 2017-04-11 09:52:33
[PHP讨论组]

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

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

count 1000
substr 999
time 990
.....

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

PHPz
PHPz

学习是最好的投资!

全部回复(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
高洛峰

怎么会有这么无聊的需求?

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

巴扎黑

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

大家讲道理

你修改php源代码,不然你说怎么实现

阿神

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

巴扎黑

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号