PHP shell_exec等待脚本完成?

时间:2011-09-03 22:36:56

标签: php queue shell-exec

我有一个PHP脚本,它在数据库中查询要完成的作业列表,并根据它在数据库中找到的内容(基本上是一个进程队列)触发其他PHP脚本。

队列运行程序脚本执行的某些脚本可能需要30秒左右才能完成运行(生成PDF,调整图像大小等)。

问题是队列运行脚本中的shell_exec()调用处理脚本,但是不等待它们完成,导致队列没有完成。

队列转轮脚本:

#!/usr/bin/php
<?php
    // Loop through database and find jobs to be done
    shell_exec(sprintf("/root/scripts/%s.php", $row['jobName']));
?>

工作脚本:

#!/usr/bin/php
<?php
    shell_exec("/usr/bin/htmldoc -t pdf --webpage test.html > test.pdf");
    // Update database to mark job as completed
?>

直接从命令行运行作业脚本,并创建PDF。

有关如何解决此问题的任何想法?或者更好的方法来运行进程队列?

1 个答案:

答案 0 :(得分:8)

试试这个:

shell_exec("nohup /usr/bin/htmldoc -t pdf --webpage test.html > test.pdf 2>&1 &");
相关问题