我有一个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。
有关如何解决此问题的任何想法?或者更好的方法来运行进程队列?
答案 0 :(得分:8)
试试这个:
shell_exec("nohup /usr/bin/htmldoc -t pdf --webpage test.html > test.pdf 2>&1 &");