



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第Laravel框架實(shí)現(xiàn)定時(shí)發(fā)布任務(wù)的方法本文實(shí)例講述了Laravel框架實(shí)現(xiàn)定時(shí)發(fā)布任務(wù)的方法。分享給大家供大家參考,具體如下:
背景:需要每隔一小時(shí)新建一個(gè)任務(wù)
/post/8484.html
Laravel官方自帶這個(gè)功能,需要利用到Linux系統(tǒng)的cronTab功能。
1、利用Linux的cronTab功能
(1)進(jìn)入Linux服務(wù)器環(huán)境,命令行輸入
crontab-e
這樣就直接進(jìn)入了服務(wù)器下的/var/spool/cron/root文件。如果/var/spool/cron/下還沒有root文件,輸入上面那個(gè)命令就會(huì)自動(dòng)新建root文件了。
(2)先進(jìn)入文件編輯模式,在root文件中輸入
復(fù)制代碼代碼如下:*****/usr/local/php/bin/php/opt/xxx/xxx/artisanschedule:run1/dev/null21
前面第一個(gè)目錄是php在服務(wù)器上的位置,如果不清楚,可以命令行輸入whichphp自行查看然后修改。
第二個(gè)目錄是你的laravel項(xiàng)目的存放位置,就是artisan文件所在的根目錄
2、然后在laravel項(xiàng)目目錄下新建任務(wù),命令行輸入
phpartisanmake:commandSendTask
然后發(fā)現(xiàn)在app/Console/Commands路徑下多了一個(gè)SendTask.php的文件
自定義這個(gè)文件的$signature(等會(huì)兒要跟app/Console/Kernel.php文件中的command里面的名稱對應(yīng),比如我寫的是task:send)、$description(對這個(gè)任務(wù)的描述)、handle()方法中是這個(gè)定時(shí)任務(wù)的主要邏輯代碼。
3、然后修改app/Console/Kernel.php文件
在$commands里要增加剛剛的任務(wù)的存放路徑;要同時(shí)執(zhí)行多個(gè)任務(wù)時(shí),將要同時(shí)執(zhí)行的任務(wù)的class加入到$commands
protected$commands=[
\App\Console\Commands\SendTasks::class,
\App\Console\Commands\SendTaskEveryDay::class,
\App\Console\Commands\SendTaskEveryWeek::class,
schedule里面是定時(shí)執(zhí)行的核心代碼:可以自己直接在里面寫要執(zhí)行的任務(wù)的內(nèi)容,也可以調(diào)用新建的command里的任務(wù)執(zhí)行內(nèi)容。后面就是說明執(zhí)行任務(wù)的頻次。
protectedfunctionschedule(Schedule$schedule)
//$schedule-call(function(){
//Task::create(['title'='發(fā)送定時(shí)任務(wù)']);
//})-everyMinute();
//調(diào)用artisan
//$schedule-command('tasks:send')-hourly();
$schedule-command('tasks:send')-cron('0*/2***');
$schedule-command('tasks:everyday')-dailyAt('09:00');
其實(shí)到這里已經(jīng)是可以執(zhí)行發(fā)布定時(shí)任務(wù)的期待了,但是我希望可以傳參到這個(gè)定時(shí)任務(wù)里面去,因?yàn)槊看蔚娜蝿?wù)內(nèi)容不一樣,需要達(dá)到可以自定義的效果。在這里糾結(jié)了很久,還嘗試了修改handle()方法,修改成為handle($data),然后在要發(fā)布定時(shí)任務(wù)的時(shí)候調(diào)用這個(gè)handle()方法,然后將參數(shù)通過$data傳過來,但是發(fā)現(xiàn)一旦handle()里面帶參數(shù)之后定時(shí)任務(wù)就不能執(zhí)行了,具體原因不知道,但是這個(gè)思路明顯就是錯(cuò)了。
最后走了很多彎路,想到一個(gè)辦法,不能從外部傳參進(jìn)去,就在方法里面把參數(shù)查出來。我想要的效果就是:新建一個(gè)任務(wù),然后這個(gè)新建的任務(wù)需要每隔1小時(shí)自動(dòng)新建一次。
想到的解決辦法就是在handle()方法里面用sql語句或者查詢構(gòu)造器先把新建的那個(gè)定時(shí)任務(wù)查出來,然后將這個(gè)任務(wù)再新增一次。暫時(shí)能想到的就是這個(gè)辦法,起碼可以達(dá)到我想要的效果了。
$cron=Task::where('type','xxx')
-first();
$cronTab=$cron-jsonSerialize();
$task=Task::create($cronTab);
更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進(jìn)階教程》、《p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療設(shè)備質(zhì)量管理體系建設(shè)探討
- 區(qū)款鏈技術(shù)助力企業(yè)實(shí)現(xiàn)辦公自動(dòng)化
- 鄉(xiāng)下耕地出售合同范例
- 噯氣的臨床護(hù)理
- 廈門市2025 屆高三畢業(yè)班第四次質(zhì)量檢測-英語+答案
- 醫(yī)療數(shù)字化與區(qū)塊鏈數(shù)字身份認(rèn)證的協(xié)同發(fā)展
- 小學(xué)社團(tuán)活動(dòng)總結(jié)模版
- 醫(yī)療空間中的綠色療愈效果探索
- 醫(yī)療服務(wù)流程優(yōu)化對提高患者滿意度的影響研究
- 光伏公司租賃合同范例
- 2024年新課標(biāo)高考?xì)v史試卷(適用云南、河南、新疆、山西地區(qū) 真題+答案)
- 知道網(wǎng)課智慧《自動(dòng)化生產(chǎn)線實(shí)訓(xùn)》測試答案
- 《大?!氛n件 圖文
- 智慧管網(wǎng)項(xiàng)目建設(shè)方案
- 常用個(gè)人土地承包合同
- 【鍍鉻廠污水處理設(shè)計(jì)13000字(論文)】
- 2024年注冊安全工程師考試題庫及參考答案(完整版)
- 眼的解剖結(jié)構(gòu)與生理功能課件
- DL-T 572-2021電力變壓器運(yùn)行規(guī)程-PDF解密
- 2023-2024學(xué)年人教版數(shù)學(xué)八年級下冊期中訓(xùn)練卷
- 人教版 美術(shù) 三年級下冊全冊表格式教案教學(xué)設(shè)計(jì)
評論
0/150
提交評論