php - 使用 Queue 或 Schedule 来完成这个转换工作更好吗?
问题描述
我需要使用 Laravel 转换/调整上传的图像大小,以便它们在接下来的几秒或几分钟内可用......
我想知道,为了减轻服务器上的压力,使用 LaravelSchedules
或Queues
如果Queues
是要走的路,怎么调度?(延迟?)
解决方案
如果您希望多个用户同时上传多张图片,在这种情况下,我会坚持完成Queue
这项任务。这是Laravel 7.x Queue的链接,他们有非常好的文档。
第 1 步:php artisan queue:table
& php artisan migrate
。这将创建 2 个表:jobs和failed_jobs。
第 2 步:创建工作php artisan make:job ResizeImage
。这将在作业文件夹下创建一个新文件。它implements ShouldQueue
会为你施展魔法。
第三步:拨打调度电话。 ResizeImage::dispatch($params);
. 要延迟,请添加->delay(now()->addMinutes(10));
第 4 步:在您的 .env 文件中,更改QUEUE_CONNECTION=sync
为QUEUE_CONNECTION=database
. 此配置将由config/queue.php
文件使用。
第 5 步:清除配置和缓存。php artisan config:clear
php artisan cache:clear
要理解的事情:
- 当您调度作业时,作业表中将添加一个新行。无论您添加到作业文件中的 handle() 方法中的什么,都将添加到表的有效负载列中。
- 要触发队列,您可以添加一个
supervisor
到您的服务器或一个简单的php artisan queue:work
将运行作业。
请仔细阅读文档,他们有很好的+深入的+更好的示例解释。干杯!
推荐阅读
- python - 在条件 np.where 中使用 ffill()
- python - 在 List 中访问对象类 Python
- discord.js - Discord检查是否存在mentioend频道
- android - Android Room 数据库 LiveData 响应来自两个不同表的数据
- python-3.x - 如何使用bs4提取html表格
- apache-spark - 通过 json 键拆分 spark 数据帧行以创建新的数据帧输出
- ios - Swift - 是否可以通过单击按钮移动到 tableview 中的下一个单元格?
- laravel - 如何影响自定义 Request 类的执行优先级?
- javascript - Vue - 包裹找不到模块
- heroku - 我想使用枕头模块,但是