首页 > 后端开发 > php教程 > 使用队列延期Laravel任务

使用队列延期Laravel任务

William Shakespeare
发布: 2025-03-07 01:16:10
原创
547 人浏览过

Deferring Tasks in Laravel Using Queues

>本文探讨了Laravel的队列API,这是推迟计算密集型任务以改善用户体验和网站性能的强大工具。 我们将介绍关键概念,并以一个实践的例子来说明它们。

网站速度会显着影响SEO和用户满意度。 缓慢的页面加载时间通常源于资源丰富的代码块。 解决方案?推迟非关键任务以提高整体速度。 Laravel的队列API提供了一种简化的方法来实现这一目标。

>

> Laravel的队列API管理添加到队列中的工作。 这些队列与连接相关联,这又采用了特定的队列驱动程序。让我们分解组件:

>队列驱动程序

>类似于数据库连接,队列API支持各种驱动程序,包括数据库,beanstalkd,sqs和redis。驱动程序确定排列在何处存储的位置(例如,数据库或Redis服务器)。 两个特殊驱动程序null,可用于测试; null跳过作业执行。

连接

>队列配置需要指定默认连接。此连接定义:

  • 的队列驱动程序要使用。
  • >特定于驱动程序的配置设置。
  • 新作业的默认队列名称。

队列

除非另有说明,否则将作业添加到默认队列中。

>

现在,让我们构建一个真实世界的示例:生成图像缩略图。

创建您的第一个队列作业

实时生成多个图像缩略图会对用户体验产生负面影响,尤其是使用大图像或许多缩略图大小。 我们没有将此任务推荐给队列,而不是实时处理。 随着主页迅速加载,这种方法提供了卓越的用户体验,并且缩略图生成异步。

创建图像模型

首先,我们将创建一个模型来管理上传的图像:>

这会生成Image>模型和迁移文件。 修改迁移(

数据库/迁移/yyyy_mm_mm_dd_hhmmss_create_images_table.php
php artisan make:model Image --migration
登录后复制
登录后复制
)以包含原始图像路径:

> Image 运行迁移:

<?php
// database/migrations/YYYY_MM_DD_HHMMSS_create_images_table.php
// ...
$table->string('org_path');
// ...
?>
登录后复制
登录后复制
创建laravel作业

>我们将使用干预映像库进行缩略图处理。通过作曲家安装它:
php artisan migrate
登录后复制
登录后复制

使用工匠命令创建作业:

php composer.phar require intervention/image
登录后复制
替换

> app/jobs/processimagethumbnails.php

的内容:
php artisan make:job ProcessImageThumbnails
登录后复制
>

方法包含缩略图生成逻辑。

>
<?php
// app/Jobs/ProcessImageThumbnails.php
// ...
public function handle()
{
    $image = $this->image;
    $full_image_path = public_path($image->org_path);
    $resized_image_path = public_path('thumbs' . DIRECTORY_SEPARATOR . $image->org_path);
    $img = \Image::make($full_image_path)->resize(300, 200);
    $img->save($resized_image_path);
}
// ...
?>
登录后复制
测试作业

handle>让我们创建一个简单的图像上传表单。 创建一个控制器(

app/http/controllers/imagecontroller.php

):

>
php artisan make:model Image --migration
登录后复制
登录后复制

创建一个视图(资源/浏览量/upload_form.blade.php),然后添加路由中的路由/web.php >

<?php
// database/migrations/YYYY_MM_DD_HHMMSS_create_images_table.php
// ...
$table->string('org_path');
// ...
?>
登录后复制
登录后复制

方法处理文件上传,数据库条目,并派遣upload上传后,使用数据库查询来验证作业在ProcessImageThumbnails表中的添加。

>队列工作jobs

>队列工作处理排队的作业。从:

开始

此命令处理未决作业。 输出将显示工作处理状态。 对于连续的背景处理,请使用诸如主管,马戏团或类似的过程管理器。

结论
php artisan migrate
登录后复制
登录后复制
Laravel的队列API有效地处理资源密集型任务,从而增强用户体验。 本文提供了基本的理解和实际实施示例。 要进行进一步的学习,请探索Envato市场的资源。

以上是使用队列延期Laravel任务的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板