PHP后台进程不工作

时间:2012-04-26 09:03:05

标签: php background-process shell-exec

我正在使用以下网站来帮助我处理PHP中的后台进程 - http://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/

我的代码基本相同,只是我的shell_exec方法看起来像这样 -
nohup php -f /my/path/to/import_products.php 2 > /dev/null 2> /dev/null & echo $!

它正在执行的PHP脚本运行得很好并且导入了产品,但是当我向sleep(10)添加import_products.php时,while(is_process_running($ps))只循环一次并退出。

似乎正在执行的命令shell_exec正在立即完成,而不是等待10秒(来自sleep(10))。

为什么会出现这种情况?

修改
我想我的问题确实是“为什么进程等待PHP脚本停止显示在ps之前?” - 当PHP脚本休眠10秒时ps $pid应该显示该过程至少10秒?

1 个答案:

答案 0 :(得分:1)

请相应修改您的代码。

  1. 在启动php标记之前,在php文件的顶部添加#!/usr/bin/env /usr/bin/php
  2. 更改shell_exec("nohup /usr/bin/php /my/path/to/import_products.php > /dev/null &")
  3. 请注意我的php路径是/ usr / bin / php我正在使用ubuntu os.So如果你的php可执行路径不同,那么相应地替换它。