9

我有一个 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。

有想法该怎么解决这个吗?还是运行进程队列的更好方法?

4

1 回答 1

12

试试这个:

shell_exec("nohup /usr/bin/htmldoc -t pdf --webpage test.html > test.pdf 2>&1 &");
于 2011-09-04T01:19:41.060 回答