我正在运行多个shell_exec
, process.php
在后台运行
在shell/ssh
上,我执行这样的代码:username [~/public_html/curl]# php index.php
例子…
index . php
<?php
shell_exec("php process.php > /dev/null 2>&1 &");
shell_exec("php process.php > /dev/null 2>&1 &");
shell_exec("php process.php > /dev/null 2>&1 &");
shell_exec("php process.php > /dev/null 2>&1 &");
?>
process.php
<?php
$section = rand(999,999999);
$z = 1;
print "STARTED .... 'n";
while($z <= 10) {
print "---------------------------------'n";
print $section . ": " . $z . "'n";
$z++;
sleep(2);
}
print "LOOP FINISH at " . time();
?>
当process.php
's正在运行时,我有两个问题:
- 我看不到
process.php
的输出(我需要知道他们在做什么) - 我需要知道哪个进程已经完成,哪个进程已经启动。
实时记录输出的最佳方式是什么?保存为文本文件?或者如何做到mysql数据库(日志表)?
如果您的进程只在另一个php脚本的生命周期内活动,您可以使用popen而不是shell_exec:
http://us.php.net/popen这为您提供了一种非常方便的方法,可以使用与文件句柄相同的接口从其他进程获取数据到php脚本中。要知道进程是否完成,您可以确保进程在完成时发送EOF(文件结束),并使用feof php函数来检测它。
另一方面,如果您的进程可能比其他任何php脚本都要长,那么文本文件可能是一个非常实用的解决方案。但是,请记住,磁盘访问总是比内存访问慢得多,因此如果使用文本文件进行通信,它将不会达到最佳速度。