>本文探讨了Laravel的队列API,这是推迟计算密集型任务以改善用户体验和网站性能的强大工具。 我们将介绍关键概念,并以一个实践的例子来说明它们。
网站速度会显着影响SEO和用户满意度。 缓慢的页面加载时间通常源于资源丰富的代码块。 解决方案?推迟非关键任务以提高整体速度。 Laravel的队列API提供了一种简化的方法来实现这一目标。
>> Laravel的队列API管理添加到队列中的工作。 这些队列与连接相关联,这又采用了特定的队列驱动程序。让我们分解组件:
>类似于数据库连接,队列API支持各种驱动程序,包括数据库,beanstalkd,sqs和redis。驱动程序确定排列在何处存储的位置(例如,数据库或Redis服务器)。 两个特殊驱动程序null
,可用于测试; null
跳过作业执行。
>队列配置需要指定默认连接。此连接定义:
>
现在,让我们构建一个真实世界的示例:生成图像缩略图。创建您的第一个队列作业
创建图像模型
这会生成Image
>模型和迁移文件。 修改迁移(
php artisan make:model Image --migration
>
Image
运行迁移:
<?php // database/migrations/YYYY_MM_DD_HHMMSS_create_images_table.php // ... $table->string('org_path'); // ... ?>
>我们将使用干预映像库进行缩略图处理。通过作曲家安装它:
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
>让我们创建一个简单的图像上传表单。 创建一个控制器(
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'); // ... ?>
方法处理文件上传,数据库条目,并派遣ProcessImageThumbnails
表中的添加。
>队列工作jobs
此命令处理未决作业。 输出将显示工作处理状态。 对于连续的背景处理,请使用诸如主管,马戏团或类似的过程管理器。
结论php artisan migrate
以上是使用队列延期Laravel任务的详细内容。更多信息请关注PHP中文网其他相关文章!