将FFmpeg作为php中的进程运行时出现超时错误

Posted

技术标签:

【中文标题】将FFmpeg作为php中的进程运行时出现超时错误【英文标题】:Timeout error while running FFmpeg as a process in php 【发布时间】:2020-07-08 04:01:31 【问题描述】:

我正在尝试在运行时为 FFmpeg 视频压缩创建一个进程。在我的本地系统中,它在 30 秒内运行。当我尝试在服务器中运行它时,它在 60 秒后开始抛出超时错误。当我在服务器中手动运行命令时,大约需要 2 分钟。我知道php.ini 中的一些配置需要修改。我尝试将进程的配置更改为 300 秒。尽管如此,仍在输出相同的超时错误。

The process "/usr/bin/ffmpeg -i '/var/temp/5e7de5a9de7c2/creme bulee-01-infuse
the cream and milk.mp4' -s 1668x2224 -c:a copy '/var/temp/5e7de5a9de7c2/compre
ssed/temp_creme bulee-01-infuse the cream and milk_1668x2224.mp4'" exceeded th
e timeout of 60 seconds.

php.ini,我有如下配置:

max_execution_time = 300 
max_input_time = 300

如何阻止我的进程超时?

【问题讨论】:

是命令行脚本吗? @Vishal 是的,我正在创建一个命令作为运行时的进程。 php.ini 的当前位置是什么?你用的是linux服务器吗? 是的,它的 Linux 发行版 Ubuntu 和 path=/etc/php/7.2/apache2/php.ini 和 编辑这个 /etc/php/7.2/cli/php.ini 文件 【参考方案1】:

我有同样的错误,你需要在 FFMpeg::create 中添加设置并使用 FFMpeg::create

$ffmpeg = FFMpeg::create(
  array(
   'timeout' => 0, // The timeout for the underlying process
  )
);
$ffmpeg->open($video_path);

更多信息在这里https://github.com/PHP-FFMpeg/PHP-FFMpeg

【讨论】:

【参考方案2】:

php.ini 中的max_execution_time 指令不影响手册中所述的shell 命令(详见https://www.php.net/manual/en/function.set-time-limit.php)

我的猜测是您使用的是Symfony\Component\Process\Process,因为默认情况下它的超时时间正好是 60 秒,并且您的错误消息看起来很熟悉。如果我是对的,请try increasing the timeout:

$process = new Process($ffmpeg_cmdline);
$process->setTimeout(3600);
$process->run();

【讨论】:

以上是关于将FFmpeg作为php中的进程运行时出现超时错误的主要内容,如果未能解决你的问题,请参考以下文章

在 weblogic 服务器上部署进程时出现超时错误

Autodesk Forge - 将文件作为块上传到 Node JS 中的 BIM 360 存储时出现 504 网关超时

RPC:端口映射运行时出现超时错误

运行cron作业时出现网关超时错误

运行多服务器 SQL Server 查询时出现超时错误

Asp.Net 在运行存储过程时出现超时错误