我想在php中处理我的访问日志 - 检查一些IP,这些IP是内容等等,PHP中的所有内容,以CLI运行。我试图跟随,但它永远不会传递exec tail -f,所以,实际上我无法处理数据。任何帮助表示赞赏。
$log = '/var/log/lighttpd/web.org-access.log';
$pipefile = '/www/web.org/tmp/fifo.tmp';
if(file_exists($pipefile))
if(!unlink($pipefile))
die('unable to remove stale file');
umask(0);
if(!posix_mkfifo($pipefile,0777))
die('unable to create named pipe');
exec("tail -f $log > $pipefile 2>&1 &"); //I tried nohup and so on...
//exec("varnishncsa $log > $pipefile 2>&1 &"); //will be here instead tail -f
echo "never comes here"; //never shows up
如果可能的话,我想在PHP中做,没有bash / tcsh脚本(我知道如何使用它们)。
感谢。
答案 0 :(得分:2)
如果您希望exec
启动后台处理,则必须重定向其输出。
手册中的引用:
如果使用此功能启动程序,为了使其在后台继续运行,必须将程序的输出重定向到文件或其他输出流。如果不这样做将导致PHP挂起,直到程序执行结束。
请注意完整的语法说明:
string exec ( string $command [, array &$output [, int &$return_var ]] )