PHP shell_exec 等待脚本完成?

标签 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。

关于如何解决这个问题的任何想法?还是运行进程队列的更好方法?

最佳答案

试试这个:

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

关于PHP shell_exec 等待脚本完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7296288/

相关文章:

php - sudo_exec 什么都不返回

php - 如何暂停由 PHP 的 shell_exec() 运行的 wget 下载?

php - 使用firefox下载时的文件名

php - 大小为一的数组声明

php - 适用于 iPhone 和 Android 的图形库

django - Celery 限速 : Is it possible to rate-limit a celery task differently based on a run-time parameter?

Java:这里的返回是做什么的?

python - 如何使用带锁的多处理队列

php - 使用php在/etc中创建目录

php - 检测重复值