[英]Running php script in the background
我有这个简单的示例脚本:
#!/usr/bin/php
<?php
while(true) {
error_log("hello " . time() . "\n", 3, "logs.log");
sleep(3);
}
我用命令执行:
me:~/Desktop$ php worker.php &
如预期的那样,它返回我6683
:进程的ID。 精细。
现在,确保一切正常,我做一个ps
并得到:
PID TTY TIME CMD
5561 pts/1 00:00:00 bash
6683 pts/1 00:00:00 php
6705 pts/1 00:00:00 ps
[1]+ Stopped php worker.php
为什么停止? 它不应该连续运行直到有人kill -9
吗?
如果我再做一次ps
我得到:
PID TTY TIME CMD
5561 pts/1 00:00:00 bash
6683 pts/1 00:00:00 php
7395 pts/1 00:00:00 ps
该过程已存在,但未记录日志(休眠?)
任何人?
钽
该脚本必须有一个转储标准输出的地方,否则它会显示上述行为(停止运行)。 可以这样完成:
php worker.php > /dev/null &
这样,它就可以工作了,定时无限循环完成了它的工作。 唯一的问题是:如果您现在停止父进程(外壳程序),则后台php进程也将停止。
要解决它,请运行:
disown -h php-process-id
Youi现在可以关闭所有外壳,退出并前往酒吧。
干得好! ;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.