我想最小化传入请求的数据库查询。它目前需要写入6个不同的表。在返回响应之前不需要进行处理。 因此,我考虑laravel队列,但我想知道我是否也可以摆脱写入队列/作业表所需的单独查询。我可以在本地存储作业而不是将它们写入数据库吗?
一个可能的黑客就是有一个单独的路由,我将数据发送到处理。这样我就不需要写入数据库,而只需将数据转发到该路由而无需等待响应。这会比将作业写入数据库更快吗?
答案 0 :(得分:1)
如果您不想使用本机队列驱动程序(即使用DB),我可以建议您使用Rabbit-MQ。这是Laravel的一个很好的驱动程序实现:
RabbitMQ Queue driver for Larave
您必须使用以下命令在CLI中运行deamon服务:
./artisan queue:work
(deamon版本 - 在您对代码进行每次更改后,您必须调用./artisan queue:restart
来刷新队列代码)
或
./artisan queue:listen
(适用于./artisan queue:work --once
流程制作者)
或使用Supervisor:
./artisan queue:work --once
(我个人最喜欢的)
之后,您将进入队列(使用dispatch()
或\Queue::push()
)的每个任务都将被传递到RabbitMQ服务器,并将通过队列驱动程序执行。