2011-09-03 76 views
6

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

队列运行脚本执行的一些脚本可能需要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

请出示一些代码 –

回答

7

试试这个:

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