首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel跳槽Symfony\Component\Process\Exception\ProcessTimedOutException

Laravel跳槽Symfony\Component\Process\Exception\ProcessTimedOutException
EN

Stack Overflow用户
提问于 2021-12-12 03:17:44
回答 1查看 1.7K关注 0票数 3

我有一个web应用程序,它运行一个作业,使用aminyazdanpanah/php-ffmpeg-video-streaming包将视频转换为HLS。但是,大约2分钟后,作业失败并引发错误:

代码语言:javascript
复制
Symfony\Component\Process\Exception\ProcessTimedOutException: The process '/usr/bin/ffmpeg -y -i...'
exceeded the timeout of 300 seconds. in /var/www/vendor/symfony/process/Process.php:1206

拉勒维尔的工作时间设置为7200秒。我的主管安装程序还指定了7200秒的超时:

代码语言:javascript
复制
[program:app_worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisan queue:work --tries=1 --timeout=7200 --memory=2000
autostart=true
autorestart=true

我还在ini文件中将我的php max_execution_time设置为7200 s。在作业handle()函数中,我还调用set_time_limit(7200);来设置时间限制。

我已经重新启动队列工作器并清除了缓存,但这似乎解决不了问题。

似乎Symfony忽略了Laravel的超时规范。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-12 13:18:32

我注意到它在大约2分钟后就失败了,因为在我的config/queue.php文件中,redis retry_after设置为90。

代码语言:javascript
复制
 'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
            'queue' => env('REDIS_QUEUE', 'default'),
            'retry_after' => 90,
            'block_for' => null,
            'after_commit' => false,
        ],

我增加到3600,所以工作在2分钟后停止失败,但在300秒后继续失败。

后来,我跟踪了来自aminyazdanpanah/php-ffmpeg-video-streaming FFmpeg::create()的超时。默认情况下,该函数设置300s的超时。因此,我不得不向函数传递一个配置,以增加超时时间:

代码语言:javascript
复制
use Streaming\FFMpeg;

$ffmpeg =  FFMpeg::create([
            'timeout'          => 3600,
        ]);

这解决了超时问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70320689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档