- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在处理一个非常大的 PHP 代码库(主要是程序代码库),该代码库是在过去 10 年中由我之前的开发人员拼凑而成的,现在我们正承受着沉重的数据库负载。查看一些文件会发现执行了 40 到 60 个以上的 MySQL 查询。花时间去追踪它们在这个令人讨厌的大文件中的用途通常表明它们进行了查询并且从未使用过结果。我觉得如果我能找出代码库中的问题区域,我就可以开始重构。
我在 StackOverflow 上看过很多关于各种审计工具的帖子:
不过,我还没有找到任何分析脚本中查询使用情况的东西。例如,文件中包含多少 SELECT、INSERT 和 UPDATE 查询。更有趣的是,其中有多少包含在循环结构中?我写了一个快速的脏递归文件搜索来识别一些基本问题:
$it = new RecursiveDirectoryIterator($path);
foreach(new RecursiveIteratorIterator($it) as $file)
{
if(stristr($file, "/.") == false && stristr($file, "/..") == false)
{
$contents = file_get_contents($file);
// Regular MySQL queries...indicative of SQL injection points
$mysql_count = substr_count($contents, "mysql_query(");
$select_count = substr_count($contents, 'SELECT ');
$insert_count = substr_count($contents, 'INSERT INTO');
$update_count = substr_count($contents, 'UPDATE ');
if($mysql_count > 0 || $select_count > 0 || $insert_count > 0 || $update_count > 0)
{
$out[] = array('file' => $file,
'mysql_count' => $mysql_count,
'select_count' => $select_count,
'insert_count' => $insert_count,
'update_count' => $update_count
);
}
$contents = null;
}
}
var_dump($out);
但这并没有在循环中找到任何东西,甚至没有分析查询以查看它是否包含高阈值的 JOINS。我可以编写这样的工具,但如果它已经存在,为什么还要重新发明轮子?
是否有任何工具可以识别可能存在问题/高压力/低效查询的 PHP 文件?
我的目标是确定重构遗留过程代码最有益的点。
最佳答案
比大量查询更糟糕的是缓慢的查询。所以我会尝试找到那些。
您可以使用 MySql 的慢查询日志功能来做到这一点: http://dev.mysql.com/doc/refman/5.6/en/slow-query-log.html
关于php - 审计 PHP 的低效查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13315159/
我写了一个函数,应该用值替换两个定界符之间的代码,它返回(我将其应用到的字符串是 HTML 对象的 .outerHTML)。 这将类似于它在例如中的使用方式。 Vue.js 或 Angular。 看起
好的,我有一个 Django View ,如下所示: @render_to('home/main.html') def login(request): # also tried Client.
由于我创建的几乎所有项目都包含 ListView,因此我想到创建一个类,其中包含修改 ListView 的所有重要功能。它看起来像这样: 主窗体: ListViewFunctions LVF = ne
The default implementation on Stream creates a new single-byte array and then calls Read. While this
我当然不是 Drupal 专家,但我之前设计并构建了一些数据库,所以我对第 3 方团队正在处理的数据库结构感到困惑,我已经将 Sequel Pro 添加到其中虚拟内容。我认为如果使用 Drupal 的
我想生成一个随机的短十六进制字符串(比如 8 位或 16 位)。 有很多选择可以做到这一点,例如,从我的头顶开始: uuid.uuid4().hex[:8] md5().hexdigest()[:8]
我是一名优秀的程序员,十分优秀!