首页 > 解决方案 > 使用 Queue 或 Schedule 来完成这个转换工作更好吗?

问题描述

我需要使用 Laravel 转换/调整上传的图像大小,以便它们在接下来的几秒或几分钟内可用......

我想知道,为了减轻服务器上的压力,使用 LaravelSchedulesQueues

如果Queues是要走的路,怎么调度?(延迟?)

标签: phplaravel

解决方案


如果您希望多个用户同时上传多张图片,在这种情况下,我会坚持完成Queue这项任务。这是Laravel 7.x Queue的链接,他们有非常好的文档。

第 1 步php artisan queue:table& php artisan migrate。这将创建 2 个表:jobsfailed_jobs

第 2 步:创建工作php artisan make:job ResizeImage这将在作业文件夹下创建一个新文件。它implements ShouldQueue会为你施展魔法。

第三步拨打调度电话ResizeImage::dispatch($params);. 要延迟,请添加->delay(now()->addMinutes(10));

第 4 步:在您的 .env 文件中,更改QUEUE_CONNECTION=syncQUEUE_CONNECTION=database. 此配置将由config/queue.php文件使用。

第 5 步:清除配置和缓存。php artisan config:clear php artisan cache:clear


要理解的事情:

  • 当您调度作业时,作业表中将添加一个新行。无论您添加到作业文件中的 handle() 方法中的什么,都将添加到表的有效负载列中。
  • 要触发队列,您可以添加一个supervisor到您的服务器或一个简单的php artisan queue:work将运行作业。

请仔细阅读文档,他们有很好的+深入的+更好的示例解释。干杯!


推荐阅读