前言
laravel的任務(wù)調(diào)度是很好用的,因為Laravel提供了平滑而又富有表現(xiàn)力地調(diào)度器,并且服務(wù)器上只需要一個Cron條目即可,這使我們從編寫手動寫crontab中解放出來,使得程序重新獲得定時任務(wù)的控制權(quán)。
但是,我們發(fā)現(xiàn)laravel的文檔中只提供了linux/unix下的解決方案,但是我們大多數(shù)時候本地開發(fā)環(huán)境都是在windows下搭建的,所以,我們需要解決這些問題。
問題
本篇博客主要是圍繞著如下幾個問題展開
1. windows下,怎么使用laravel任務(wù)調(diào)度?
2. windows的計劃任務(wù)能否替代crontab的工作?
3. 如何更好的使用windows的計劃任務(wù)和laravel搭檔?
解決方案
主要用到了windows任務(wù)計劃程序,bat批處理,vbs腳本,有興趣可以了解。
通過計劃任務(wù)和批處理
這也是大家用到最多的方式了,stackoverflow一大半的回答都是這個。
1. 首先右鍵->新建->文本文檔,任何位置都可以。
2. 將如下代碼拷貝進(jìn)去。第一行的意思是進(jìn)去到項目目錄,第二行語句是執(zhí)行artisan命令
cd /d E:\\WWW\laravel\
php artisan schedule:run 1>> NUL 2>1
3. 然后另存為.bat的文件就好啦,名字隨意,后綴.bat。
4.然后就是創(chuàng)建計劃任務(wù),步驟圖片如下所示,填寫紅框區(qū)域就好了
這個時候就會去調(diào)用laravel的任務(wù)調(diào)度了(前提是你已經(jīng)在laravel里面編寫好了任務(wù)調(diào)度),但是我們會發(fā)現(xiàn),沒過一分鐘,都會有個dos命令的黑框彈出來,然后運(yùn)行完了之后再關(guān)閉,這樣會分散我們的注意力,于是就有了改進(jìn)方案,請看方案二。
通過vb腳本,實現(xiàn)自動任務(wù)的靜默執(zhí)行
前提是,你已經(jīng)做完了第一步所有操作,會發(fā)現(xiàn)dos會自動彈出來執(zhí)行程序,一分鐘一次(下圖所示),人都會逼瘋,所以有了此方案。
1. 首先你已經(jīng)做完了解決方案第一部分的所有操作
2. 在任何位置(只要你記得),新建一個文本文檔,然后編輯如下代碼進(jìn)去,最后另存為.vbs文件
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c E:\laravel.schedule.bat",vbhide
3.回到解決方案第一部分的第4步驟,編輯計劃任務(wù),將操作里面打開程序,從.bat腳本換成.vbs文件,步驟如下
這個時候,你會發(fā)現(xiàn),你的計劃程序任然在進(jìn)行,但是再也看不到煩人的dos窗口啦,這樣也就實現(xiàn)了linux下的crontab的功能啦。
總結(jié)
ok,弄這個,包括測試,也花了不少時間,但是編程的樂趣不就是對未知的探索嗎? laravel確實是一個好的框架,接下來,我還會寫關(guān)于laravel郵件,隊列等博客。但是突然發(fā)現(xiàn)vb好像也挺有用處的,我有不少大膽的想法了
以上這篇laravel Task Scheduling(任務(wù)調(diào)度)在windows下的使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- Laravel框架實現(xiàn)定時Task Scheduling例子