【发布时间】:2015-04-19 21:21:07
【问题描述】:
情况如下:
我有一个 Laravel 4.2 应用程序,可以(从第三方 API)检索资产。这是一个长期存在的资产(它仅每 12-24 小时更改一次)并且有点耗时(一个大图像文件)。我确实缓存了资产,因此影响已或多或少地最小化,但仍然存在这样的情况,即早上第一个登录到我的应用程序的人必须等待应用程序首次加载资产。
我已经设置了一个将排队并每八小时运行一次的作业。这应该确保缓存中的资产始终是新鲜的。它的工作原理是在运行后将作业重新排队 8 小时。
问题是这样的:我即将将此作业系统部署到生产环境中,但我不知道如何开始第一次运行这个东西。
理想情况下,我希望有一个管理选项,其中我有一个按钮,上面写着“单击此处提交作业”,但我想让它尽可能万无一失并防止人们(我不是唯一的管理员)多次提交作业。然而,要做到这一点,应用程序需要检查并查看作业是否已经在队列中。我找不到以独立于实现的方式执行此操作的方法(我使用的是redis,但将来可能会改变)。
另一个选项是添加一个artisan 命令来运行初始进程。这样我就可以部署应用程序,运行一个工匠命令,然后忘记它。
所以,回顾一下,我有两个问题:
有没有办法检查队列以查看其中有哪些作业?
有更好的方法吗?
谢谢
【问题讨论】:
-
您好!如果您使用的是 Redis,您可以尝试使用 Laravel Horizon 来获取有关队列的更多详细信息。 laravel.com/docs/8.x/horizon 但是如果你觉得这太多了,看看这个其他答案:stackoverflow.com/questions/35412779/…