Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 共享服务器上mySQL的查询日志记录_Php_Mysql_Logging - Fatal编程技术网

Php 共享服务器上mySQL的查询日志记录

Php 共享服务器上mySQL的查询日志记录,php,mysql,logging,Php,Mysql,Logging,我与Dreamhost有一个VPS,但mySQL服务器是共享的。我真的很想开始为特定站点的每个mySQL查询生成可访问的日志 我可以将其手动滚动到我的抽象层中,但我很好奇的是,可以在运行时设置sql\u log\u off这样的功能,以便将所有查询记录到我可以循环和查看的文件中?根据我对问题的理解: 您可以做的是将查询包装到某种包装器中,该包装器将查询记录到一个文件中。这可能是一个文本文件或一个PHP文件,只允许有权限的人查看(日志查看器脚本可以包括这一点,以便只有具有适当访问权限的人才能查看)

我与Dreamhost有一个VPS,但mySQL服务器是共享的。我真的很想开始为特定站点的每个mySQL查询生成可访问的日志


我可以将其手动滚动到我的抽象层中,但我很好奇的是,可以在运行时设置sql\u log\u off这样的功能,以便将所有查询记录到我可以循环和查看的文件中?

根据我对问题的理解: 您可以做的是将查询包装到某种包装器中,该包装器将查询记录到一个文件中。这可能是一个文本文件或一个PHP文件,只允许有权限的人查看(日志查看器脚本可以包括这一点,以便只有具有适当访问权限的人才能查看)

这当然是说如果你能做到的话。(如果您想要记录来自您无法控制的站点的查询,那么我不确定。)


您可能感兴趣的包装器示例:

   function sql_query($query, $show=0)
    {
     global $queries, $debugginglist;
     $thequery = mysql_query($query) or print(mysql_error()."<br>Query was: <code>".htmlspecialchars($query)."</code>");
     $queries++;

    if ($show == 1)
     {
      print "($queries): Query was: <i><code>".htmlspecialchars($query)."</code></i><br>";
     }

     $debugginglist .= "$qbr($queries): Query was: <i><code>$query</code></i><br>";


     //this is just to give an idea for logging, NOT an exact solution
     $logquery = fopen("querylog.txt", "ab+");
     fputs($logquery, "\r\n$query");
     fclose($logquery);

     return $thequery;
    }

根据我对问题的理解: 您可以做的是将查询包装到某种包装器中,该包装器将查询记录到一个文件中。这可能是一个文本文件或一个PHP文件,只允许有权限的人查看(日志查看器脚本可以包括这一点,以便只有具有适当访问权限的人才能查看)

这当然是说如果你能做到的话。(如果您想要记录来自您无法控制的站点的查询,那么我不确定。)


您可能感兴趣的包装器示例:

   function sql_query($query, $show=0)
    {
     global $queries, $debugginglist;
     $thequery = mysql_query($query) or print(mysql_error()."<br>Query was: <code>".htmlspecialchars($query)."</code>");
     $queries++;

    if ($show == 1)
     {
      print "($queries): Query was: <i><code>".htmlspecialchars($query)."</code></i><br>";
     }

     $debugginglist .= "$qbr($queries): Query was: <i><code>$query</code></i><br>";


     //this is just to give an idea for logging, NOT an exact solution
     $logquery = fopen("querylog.txt", "ab+");
     fputs($logquery, "\r\n$query");
     fclose($logquery);

     return $thequery;
    }

您可能还对mysqlnd驱动程序提供的统计信息感兴趣:您可能还对mysqlnd驱动程序提供的统计信息感兴趣:谢谢。事实上,这就是我最终所做的。我应该更新这篇文章的。我使用我自己制作的PHP抽象层,在所有查询例程中添加了一个日志例程,并添加了一个具有不同级别的全局函数来控制所需的日志记录程度。谢谢。事实上,这就是我最终所做的。我应该更新这篇文章的。我使用自己制作的PHP抽象层,在所有查询例程中添加了一个日志例程,并添加了一个具有不同级别的全局日志,以控制所需的日志程度。