在通过 mod_fcgid 运行 Apache 和 PHP 的服务器上,我想将 PHP 处理的所有请求记录到单独的文件中,这样我就可以更好地了解哪些请求是通过 PHP 处理的,哪些请求是直接通过文件系统处理的。
这是一个在 .htaccess 中使用了一些相当复杂的重写规则的网站(Wordpress 中有W3 总缓存),它通过 mod_rewrite 将缓存的 PHP 请求转换为静态文件请求,这样缓存的请求甚至不会触及 PHP 子系统。
因此,我想确保我所做的任何日志自定义都不会被 mod_rewrite 魔法所影响。例如,请求 URI 以 .php 结尾并不意味着该请求最终将由 PHP 处理。我需要根据应用所有重写规则后发生的情况进行键入。
答案1
似乎最直接、最万无一失的方法是将日志代码包含在每一个 PHP 页面中,可能在调用 flush() 发送页面输出、写入日志文件之后,或者如果设置锁定并从那里执行文件写入成本太高,则将某些内容发送到 zeromq(我相信示例代码中有一个 php 库)或某种等待服务器,让该服务器接受、断开连接,然后锁定/写入日志。这样,如果它从 PHP 调用,它将仅记录 PHP 运行的内容。