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