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

有没有办法找出哪个PHP脚本更新了MySQL数据库?,php,mysql,apache,mysqli,Php,Mysql,Apache,Mysqli,我可以从mysqlBinLog中发现某些查询已经被激发到MySQL数据库。但是有没有办法找到哪个PHP文件执行了这些查询 我的问题是-我无法跟踪应用程序中哪个php文件正在触发特定的更新查询 我在整个应用程序中搜索了那个特定的更新查询,但没有找到任何匹配项。它是在某个地方以编程方式生成并执行的 由于代码占用空间太大,实际上,我不可能到处都放日志语句。你可以从触发更新查询的地方放日志,并获取这些日志信息你可以从触发更新查询的地方放日志,并获取这些日志信息你可以围绕数据库访问库(PDO)包装一个日志

我可以从mysqlBinLog中发现某些查询已经被激发到MySQL数据库。但是有没有办法找到哪个PHP文件执行了这些查询

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

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


由于代码占用空间太大,实际上,我不可能到处都放日志语句。

你可以从触发更新查询的地方放日志,并获取这些日志信息

你可以从触发更新查询的地方放日志,并获取这些日志信息

你可以围绕数据库访问库(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\uu
函数,祝您好运:)

您可以在数据库访问库(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\uu
函数,祝您好运:)

您是否尝试过在源代码中搜索查询?您的服务器中是否运行了cron作业?是的。我试着在源代码中搜索,但没有找到任何。有几个cron正在运行,我也对它们进行了扫描。但是没有得到任何线索。你能不能简单地重命名它所引用的表(暂时)以便它触发一个错误?然后您可能会找到源代码?Mysql提供了一个企业工具,可以与PHP Mysql客户端一起工作,甚至可以告诉您执行查询的文件和代码行。接口甚至是开源的,因此您也可以运行自己的;)您是否尝试在源代码中搜索该查询?您的服务器中是否正在运行任何cron作业?是的。我试着在源代码中搜索,但没有找到任何。有几个cron正在运行,我也对它们进行了扫描。但是没有得到任何线索。你能不能简单地重命名它所引用的表(暂时)以便它触发一个错误?然后您可能会找到源代码?Mysql提供了一个企业工具,可以与PHP Mysql客户端一起工作,甚至可以告诉您执行查询的文件和代码行。接口甚至是开源的,因此您也可以运行自己的;)