linux - Laravel 6.0,排队的作业不在服务器上排队
问题描述
我有大约需要 3-5 分钟的视频创建过程。我已经使用 Laravel 作为后台任务完成了它Events
,Listeners
并且Queues
变化
在.env
文件中
QUEUE_CONNECTION=database
在数据库中创建jobs
和failed_jobs
表。
创建视频事件
<?php
namespace App\Events;
class CreateVideoEvent
{
public $video_data;
public function __construct($video_data)
{
$this->video_data = $video_data;
}
}
创建视频监听器
<?php
namespace App\Listeners;
use App\Events\CreateVideoEvent;
use Illuminate\Contracts\Queue\ShouldQueue;
class CreateVideoListener implements ShouldQueue
{
public function __construct()
{
//
}
public function handle($event)
{
// Run video create commands
}
}
导师
[program:laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/project_folder/artisan queue:work --tries=5 --timeout=600
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/project_folder/worker.log
当视频创建过程应该开始时,它会向 DB 添加一个事件和一个队列作业。
event(new CreateVideoEvent($video_data));
所以,问题是当第一个工作开始工作时(大约需要 3-5 分钟),我在第一个完成之前创建第二个视频,它在第一个完成之前开始第二个视频创建过程。因此,基本上,作业没有排队,并且由于两个视频创建过程都停止工作,这会导致问题。
也许我错过了一些东西,或者你知道这可能是什么原因吗?
解决方案
推荐阅读
- c - 程序立即在 C 中停止?
- apache-kafka - 如何将存储在文件系统上的kafka日志转换为csv
- java - 我可以分配变量然后立即引用它们吗?
- c++ - 使用目标文件(架构的未定义符号)
- ios - 通过 Apple 商务管理更新自定义 App
- deep-learning - Pytorch 默认数据加载器卡在大型图像分类训练集上
- c# - RestSharp 没有得到响应的数据或内容
- reactjs - 在 React / Redux 中,我们可以通过 Redux 将数据从任何组件传递到另一个组件吗?
- c# - 获取 AspNet 用户 RoleId 以进行权限比较
- kdb - 除了 kdb 中的表之外的实用程序