这里是情况:
我有一个Laravel 4.2应用程序,该应用程序从第三方API检索资产。这是一项长期资产(每12-24小时仅更改一次),并且非常耗时(一个大图像文件)。我确实缓存了资产,因此影响或多或少都已最小化,但是仍然有这样的情况,早上登录我的应用程序的第一个人必须等待应用程序首次加载资产。
我已经设置了一项工作,该工作将排队并每八小时运行一次。这应该确保缓存中的资产始终是新鲜的。它可以在作业运行八小时后重新入队。
问题是这样的:我将把这个作业系统部署到生产中,而且我不确定如何第一次开始运行。
[理想情况下,我想有一个管理选项,其中有一个按钮,上面写着“单击此处提交工作”,但我想使其尽可能地简单并防止他人使用(我不是仅限管理员)。为此,应用程序需要检查并查看作业是否已经在队列中。我找不到一种以实现独立的方式执行此操作的方法(我正在使用redis
,但将来可能会更改)。
[另一种选择是添加artisan
命令以运行初始过程。这样,我可以部署该应用程序,运行一个artisan命令,而不必理会它。
所以,回顾一下,我有两个问题:
是否可以检查队列以查看其中有哪些作业?
还有更好的方法吗?
感谢
如果保证它是队列中唯一的东西,则可以使用类似的内容:
if (Queue::size() === 0) {
Queue::push(...);
}
• 如果 laravel 队列批处理中的一个作业失败了怎么办?
• Laravel Job 不受数据库数据更改的影响……真的吗?
• 等待功能是什么
• 如何使用 javascript 检查选中的复选框是否连续排列
• NodeJS amqp:是否可以在通道关闭操作完成之前调用 channel.close() 方法后立即使用消息?
• Cron 作业在 ubuntu Docker 容器中不起作用
• 如何使用 web socket 告诉我的前端后台作业已经完成?
• Github Actions:如何在 WF 中检索运行时作业 ID?
• 我的Eloquent没有选择正确的时间数据,请帮助我理解
• 如果用户未登录,如何在 Laravel 中检索有限记录,如果用户已登录,如何检索所有记录?
• 如何使用 Java 检查设备是否在 android 中被远程访问?或 cordova 的 javascript?