Laravel是一套简洁、优雅的PHPWeb开发框架(PHPWebFramework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力
Laravel 异步执行任务
不影响当前程序继续执行
描述:用户操作时 要执行计算量大且不影响主操作的任务时,可采用异步方式执行。
队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和响应的时间
大致操作
- 生成要执行的文件 php artisan make:job UploadTask
- .env 中的 QUEUE_CONNECTION=sync 变为 QUEUE_CONNECTION=redis
- UploadTask文件里写入要执行的任务
- 启动任务队列 php artisan queue:work
- 在触发位置使用 dispatch(new UploadTask()); 开启队列
代码粘贴
app/Jobs/UploadTask.php
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Log;
class UploadTask implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//因为要导入大文件 需要很久时间
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Log::info('UploadTask');
$command = 'cd ' . base_path() . ' && php artisan ExcelFile ';
$ret = shell_exec($command);
Log::info('UploadTask-导入结束'.print_r($ret,true));
}
}
启动代码摘取
$form->saved(function (Form $form) {
dispatch(new UploadTask());
return $form->redirect('yyImport','保存成功');
});
其他操作
因为是个人的电脑 随时会关机 queue就会被停掉 所以使用了windows的开机自启执行vbs
runReadExecelVbs.vbs
set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c I:\yinyue\runReadExecel.bat",vbhide
runReadExecel.bat
cd I:\yinyue
php artisan queue:work
到此这篇关于PHP Laravel框架异步执行的实现详解的文章就介绍到这了,更多相关PHP Laravel异步执行内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:PHP Laravel框架异步执行的实现详解


基础教程推荐
- TP5 连接多个数据库及使用方法 2023-08-30
- PHP实现创建一个RPC服务操作示例 2023-04-01
- TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例 2023-01-19
- PHP数据加密方式梳理介绍 2023-07-03
- laravel model模型定义实现开启自动管理时间created_at,updated_at 2023-03-02
- PHP实现生成数据字典功能示例 2022-10-18
- PHP使用SMTP邮件服务器发送邮件示例 2022-11-16
- PHP删除数组中指定值的元素常用方法实例分析【4种方法】 2022-11-12
- thinkPHP3.2.2框架行为扩展及demo示例 2022-11-07
- php中使用array_filter()函数过滤数组实例讲解 2023-05-19