有没有办法找出哪个PHP脚本更新了MySQL数据库?

时间:2012-05-21 07:22:34

标签: php mysql apache mysqli

我可以发现从mysqlBinLog向MySQL数据库发出了某些查询。但有没有办法找到哪个PHP文件执行了这些查询?

我的问题是 - 我无法追踪应用程序中的哪个php文件正在触发特定的更新查询。

我在整个应用程序中搜索了该特定更新查询,但我没有找到任何匹配项。它以编程方式生成并执行。

由于代码占用空间太大,我几乎不可能在任何地方发表日志声明。

2 个答案:

答案 0 :(得分:3)

您可以围绕数据库访问库(PDO)包装记录器类,并将该查询与回溯一起记录。

class LoggerPDO extends PDO
{
    function query()
    {
        return $this->logger('query', func_get_args());
    }

    private function logger($method, $args)
    {
        // log query
        debug_print_backtrace();
        // push to parent
        return call_user_func_array(array($this, 'parent::' . $method), $args);
    }
}

您也可以添加其他需要记录的方法,例如prepare()execute()

如果你正在使用mysql_功能,祝你好运:)

答案 1 :(得分:0)

U可以放置触发更新查询的日志并获取这些日志信息