PHP shell_exec是否等待脚本完成?

PHP shell_exec是否等待脚本完成?,php,queue,shell-exec,Php,Queue,Shell Exec,我有一个PHP脚本,可以查询数据库中要完成的作业列表,并根据在数据库中找到的内容(基本上是一个进程队列)触发其他PHP脚本 队列运行器脚本执行的某些脚本可能需要30秒左右的时间才能完成运行(生成PDF、调整图像大小等) 问题在于,队列运行程序脚本中的shell\u exec()调用处理脚本,但不等待它们完成,从而导致队列无法完成 队列运行程序脚本: #!/usr/bin/php <?php // Loop through database and find jobs to be d

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

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

问题在于,队列运行程序脚本中的
shell\u 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
作业脚本:

#!/usr/bin/php
<?php
    shell_exec("/usr/bin/htmldoc -t pdf --webpage test.html > test.pdf");
    // Update database to mark job as completed
?>
#/usr/bin/php
直接从命令行运行作业脚本会起作用,并创建PDF

有没有办法解决这个问题?还是运行进程队列的更好方法?

试试以下方法:

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