PHP Laravel框架異步執(zhí)行的實(shí)現(xiàn)詳解
Laravel 異步執(zhí)行任務(wù)
不影響當(dāng)前程序繼續(xù)執(zhí)行
描述:用戶操作時(shí) 要執(zhí)行計(jì)算量大且不影響主操作的任務(wù)時(shí),可采用異步方式執(zhí)行。
隊(duì)列的目的是將耗時(shí)的任務(wù)延時(shí)處理,比如發(fā)送郵件,從而大幅度縮短 Web 請(qǐng)求和響應(yīng)的時(shí)間
大致操作
- 生成要執(zhí)行的文件 php artisan make:job UploadTask
- .env 中的 QUEUE_CONNECTION=sync 變?yōu)?QUEUE_CONNECTION=redis
- UploadTask文件里寫入要執(zhí)行的任務(wù)
- 啟動(dòng)任務(wù)隊(duì)列 php artisan queue:work
- 在觸發(fā)位置使用 dispatch(new UploadTask()); 開啟隊(duì)列
代碼粘貼
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()
{
//因?yàn)橐獙?dǎo)入大文件 需要很久時(shí)間
}
/**
* 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-導(dǎo)入結(jié)束'.print_r($ret,true));
}
}啟動(dòng)代碼摘取
$form->saved(function (Form $form) {
dispatch(new UploadTask());
return $form->redirect('yyImport','保存成功');
});其他操作
因?yàn)槭莻€(gè)人的電腦 隨時(shí)會(huì)關(guān)機(jī) queue就會(huì)被停掉 所以使用了windows的開機(jī)自啟執(zhí)行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
到此這篇關(guān)于PHP Laravel框架異步執(zhí)行的實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)PHP Laravel異步執(zhí)行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
百度工程師講PHP函數(shù)的實(shí)現(xiàn)原理及性能分析(三)
這篇文章主要介紹了百度工程師講PHP函數(shù)的實(shí)現(xiàn)原理及性能分析(三),本文講解了常用php函數(shù)實(shí)現(xiàn)及介紹,并作了總結(jié)及建議,需要的朋友可以參考下2015-05-05
PHP使用WebDriver實(shí)現(xiàn)音頻文件的自動(dòng)下載與保存
WebDriver是一個(gè)用于自動(dòng)化瀏覽器操作的開源工具,它提供了一套統(tǒng)一的API,可以與各種瀏覽器進(jìn)行交互,模擬用戶的操作行為,下面我們就來看看PHP如何使用WebDriver實(shí)現(xiàn)音頻文件的自動(dòng)下載與保存吧2024-04-04
php實(shí)現(xiàn)singleton()單例模式實(shí)例
這篇文章主要介紹了php實(shí)現(xiàn)singleton()單例模式的方法,以實(shí)例形式簡(jiǎn)單講述了單例模式的實(shí)現(xiàn)過程,需要的朋友可以參考下2014-11-11
PHP連接sql server 2005環(huán)境配置及問題解決
這篇文章主要介紹了PHP連接sql server 2005環(huán)境配置及問題解決,需要的朋友可以參考下2014-08-08
實(shí)例解析PHP定時(shí)器的具體實(shí)現(xiàn)
我們?cè)陂_發(fā)中常會(huì)需要程序定時(shí)的執(zhí)行一些操作,這時(shí)寫一個(gè)簡(jiǎn)潔高效的定時(shí)器就非常有必要,關(guān)于定時(shí)器本文將給大家詳細(xì)的介紹,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09

