2

我正在使用以下网站来帮助我处理 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 脚本运行良好并且产品已导入,但是当我将 a 添加sleep(10)到唯一import_products.phpwhile(is_process_running($ps))循环一次并退出时。

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

任何想法为什么会这样?

编辑
我想我的问题确实是“为什么进程不等待 PHP 脚本在它停止出现在 ps 中之前退出?” - 当然,因为 PHP 脚本正在休眠 10 秒ps $pid应该显示该进程至少 10 秒?

4

1 回答 1

1

请相应地修改您的代码。

  1. #!/usr/bin/env /usr/bin/php在开始 php 标记之前在 php 文件的顶部 添加 。
  2. 改变shell_exec("nohup /usr/bin/php /my/path/to/import_products.php > /dev/null &")

请注意我的 php 路径是 /usr/bin/php 并且我使用的是 ubuntu os。因此,如果您的 php 可执行文件路径不同,请相应地替换它。

于 2012-04-26T09:23:39.513 回答