我有一个像这样的pipe道日志程序:
#!/usr/bin/php <?php $fd = fopen("php://stdin", "r"); while(true) { $l = fread($fd,8192); $l = trim($l); if($l =="") continue; file_put_contents('/home/proxy/testfile',$l."\n", FILE_APPEND); } fclose($fd);
并在我的networking服务器configuration我有:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" proxylog CustomLog "|/home/proxy/logger.php" proxylog
奇怪的是,我收到一些写入日志input,但只是很less。 远远低于默认的日志文件。 我也不能识别一个模式。
我也等了很长时间,并成功地检查了我的自定义pipe道日志中最后一个日志条目之前的时间范围内缺less的日志行 – 以消除缓冲区造成这种情况的可能性。 有任何想法吗?
你的脚本并不完全符合Apachepipe道日志脚本的预期,那么究竟是什么输出可能是未定义的。 最小的PHP示例是:
#!/usr/local/bin/php <?php $stdin = fopen ('php://stdin', 'r'); ob_implicit_flush (true); // Use unbuffered output while ($line = fgets ($stdin)) { print $line; } ?>
有关更多详细信息,请参阅http://www.sudleyplace.com/pipederrorlogs.html 。 首先得到它的工作,所以它只是输出它收到的一切,然后根据需要添加function。