12

我在我的 Laravel 项目中遇到问题,我正在尝试对大小约为450MB的FFMPEG视频文件进行转码,由于这需要很长时间,我在 Laravel 中使用队列来执行此操作。

由于我的生产环境的配置,我必须使用数据库队列,问题是每次我php artisan queue:work在我的Vagrant框中使用命令时,排队的作业在大约 60 秒后被终止。

Vagrant 盒子有 4GB 的可用内存,启用 2D 和 3D 加速,并且memory_peak_usage()在整个过程中,该命令从不列出超过 20MB 的任何内容。

我按预期检查了php_sapi_name()它的cli,因此它在执行时间方面根本不应该有任何限制,无论我转到 cli php.ini文件并再次删除任何限制以确定。

尝试重新启动流浪者,无论如何几秒钟后被杀死。

所以我决定尝试为转码过程创建一个 Laravel命令,我对文件路径和内容进行了硬编码,你瞧,它在没有被杀死的情况下工作......

我错过了关于队列的一些东西吗?我只是在运行php artisan queue:work我没有指定任何类型的超时,为什么我的队列被杀死了?

预先感谢您的帮助。

4

1 回答 1

26

正如您所发现的,作业的默认超时时间为 60 秒。超时由--timeout[=TIMEOUT]属性指定,完全禁用超时由--timeout=0.

php artisan queue:work --timeout=0
于 2017-10-01T15:29:52.193 回答