php - 实时获取多个 exec() 进程的进度

标签 php linux

我有一个执行 ffmpeg 的 php 脚本,然后它开始工作。我可以执行该脚本 4 次并生成 4 个进程。我想实时获得进展。如何获取并识别每个输出对应哪个进程?

$h = fopen('php://stdin', 'r'); $str = fgets($h);

我知道该行将获得标准输入中的任何输出,但如何分离它?如何连续轮询输出?流程启动后,如何持续访问该输出?我知道你需要 ajax,但是什么 php 方法将允许你访问该信息并将其与其他进程分开。 有些人建议将输出定向到文本文件并获取内容,但这是唯一的方法吗?为什么要为每个进程创建更多文本文件?另一个建议使用 2>&1 | 重定向输出命令后的 php script.php 。由于文件执行一次,因此仅在进程开始时获取输出。

我已经在这个问题上苦苦挣扎了一段时间,并且已经越来越接近了,所以任何专家的帮助将不胜感激。

查看编辑

$process = exec("/usr/local/bin/ffmpeg -i /home/g/Desktop/cave.wmv -deinterlace -acodec libfaac -ab 96k -ar 44100 -vcodec libx264 -s 480x320 -f flv /home/g/Desktop/file.flv")

最佳答案

这有点复杂。据我所知 exec 会阻塞 PHP 线程直到它完成。我认为 ffmpeg 可以将其进度写入文件。您需要解析该文件才能获取进度。您需要使用 Ajax 来调用它。

您需要弄清楚如何让 ffmpeg 报告其进度,其余的很简单:P

关于php - 实时获取多个 exec() 进程的进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6481210/

相关文章:

php - Mysql查询组合

php - 如何将 php cURL 升级到 7.36.0 版本?

linux - 可以加载到RAM中的可引导Linux镜像

php - jquery ui自动完成html表单多输入类型和mysql

PHP 和 MySQL - 何时启动网站

php - 使用 Laravel Blade 显示来自 Postgres 的 JSON 数据

c++ - 在 C++ 中使用 ctags 查找用构造函数声明的变量

linux - 一些 linux 程序中奇怪的描述符关闭

linux - Crontab 不运行 bash/sh 脚本的某些部分

php -\n 不将文本放在 php error_log 函数的新行上