您好,登錄后才能下訂單哦!
今天小編給大家分享一下PHP 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框架異步執行如何實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。