我有一个web应用程序,它运行一个作业,使用aminyazdanpanah/php-ffmpeg-video-streaming包将视频转换为HLS。但是,大约2分钟后,作业失败并引发错误:
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秒的超时:
[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的超时规范。
发布于 2021-12-12 13:18:32
我注意到它在大约2分钟后就失败了,因为在我的config/queue.php文件中,redis retry_after设置为90。
'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的超时。因此,我不得不向函数传递一个配置,以增加超时时间:
use Streaming\FFMpeg;
$ffmpeg = FFMpeg::create([
'timeout' => 3600,
]);这解决了超时问题。
https://stackoverflow.com/questions/70320689
复制相似问题