我正在尝试运行排队的作业,并通过命令行传递其他参数。我的用例是:
我通过主管有4个正在运行的queue:work
进程。我队列中的作业都需要访问代理服务器,通过代理服务器,我只能在任何给定时间运行4个进程。当我启动排队作业时,我必须找到当前未使用的进程号(1到4),然后通过该进程运行我的命令。
我一直在使用数据库表来存储流程,它有一个in_use
列,可以跟踪它是否被使用,但我看到的问题是两个{{1} }命令同时运行,可以从数据库中为两者选择相同的代理进程。
我想要什么
queue:work
然后以某种方式检索作业中的那个参数,这样我就可以分别在主管中运行我的4个进程。
作为一种解决方法,我创建了一个自定义artisan命令,它将接受参数,但我失去了队列功能。我不想开发自定义队列流程。
有没有办法传递这个论点?或者,有没有办法让我可以从我的自定义工匠命令中弹出作业,然后手动运行而不是通过php artisan queue:work --process=1
?
答案 0 :(得分:2)
问题可以通过使用专用队列来解决。因此,每个队列都附加了一个特定的代理进程。剩下的唯一事情是创建一个函数/进程来确定进程应该进入哪个队列。
https://laravel.com/docs/5.1/queues#pushing-jobs-onto-the-queue
检查部分:指定作业的队列