PHP shell_exec 等待脚本完成?

标签 php ffmpeg shell-exec

这个问题在这里已经有了答案:





PHP shell_exec wait for script to finish? [duplicate]

(1 个回答)


7年前关闭。




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

队列运行器脚本执行的某些脚本可能需要 30 秒左右才能完成运行(转换视频、调整图像大小等)。

问题是队列运行器脚本中的 shell_exec() 调用处理脚本,但不等待它们完成,导致队列未完成。

队列运行器脚本:

#!/usr/bin/php
<?php
    // Loop through database and find jobs to be done
    shell_exec("nohup $command > /dev/null 2> /dev/null & echo $! &");
?>

直接从命令行运行作业脚本可以工作并创建 PDF。

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

最佳答案

shell_exec 不是你的问题的原因。它会等待并返回您的命令的输出。但是,您不能在后台启动命令并使用 诺哈普 .

诺哈普是您正在调用的命令,但是一旦它启动了它的子进程,它将立即退出,因此, shell_exec 不会等待该过程完成。您还应该避免在后台运行带有 的命令。 & .

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

相关文章:

linux - 使用 unix 查找模式并替换文件内的模式

php - 在 php 中通过 post 接收 xml 文件

php - 禁用表单中选定提交按钮的回车键

ffmpeg - 使用 FFMPEG 更改 H264 配置文件

shell-exec - 在哪里可以找到 shell_exec 来启用或禁用它?

php - 使用 PHP shell_exec() 循环 : Use php for() or bash for-do-done?

php - 嵌套查询不起作用

php - Laravel 和 Vue.js 前后端分离

重新加载为 1 的 FFMPEG drawtext = 有时会崩溃

video - ffmpeg 将 mov 文件转换为 mp4 用于 HTML5 视频标签 IE9