前言
laravel的任務調度是很好用的,因為Laravel提供了平滑而又富有表現力地調度器,并且服務器上只需要一個Cron條目即可,這使我們從編寫手動寫crontab中解放出來,使得程序重新獲得定時任務的控制權。
但是,我們發現laravel的文檔中只提供了linux/unix下的解決方案,但是我們大多數時候本地開發環境都是在windows下搭建的,所以,我們需要解決這些問題。
問題
本篇博客主要是圍繞著如下幾個問題展開
1. windows下,怎么使用laravel任務調度?
2. windows的計劃任務能否替代crontab的工作?
3. 如何更好的使用windows的計劃任務和laravel搭檔?
解決方案
主要用到了windows任務計劃程序,bat批處理,vbs腳本,有興趣可以了解。
通過計劃任務和批處理
這也是大家用到最多的方式了,stackoverflow一大半的回答都是這個。
1. 首先右鍵->新建->文本文檔,任何位置都可以。

2. 將如下代碼拷貝進去。第一行的意思是進去到項目目錄,第二行語句是執行artisan命令
cd /d E:\\WWW\laravel\
php artisan schedule:run 1>> NUL 2>1

3. 然后另存為.bat的文件就好啦,名字隨意,后綴.bat。

4.然后就是創建計劃任務,步驟圖片如下所示,填寫紅框區域就好了




這個時候就會去調用laravel的任務調度了(前提是你已經在laravel里面編寫好了任務調度),但是我們會發現,沒過一分鐘,都會有個dos命令的黑框彈出來,然后運行完了之后再關閉,這樣會分散我們的注意力,于是就有了改進方案,請看方案二。
通過vb腳本,實現自動任務的靜默執行

前提是,你已經做完了第一步所有操作,會發現dos會自動彈出來執行程序,一分鐘一次(下圖所示),人都會逼瘋,所以有了此方案。
1. 首先你已經做完了解決方案第一部分的所有操作
2. 在任何位置(只要你記得),新建一個文本文檔,然后編輯如下代碼進去,最后另存為.vbs文件
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c E:\laravel.schedule.bat",vbhide

3.回到解決方案第一部分的第4步驟,編輯計劃任務,將操作里面打開程序,從.bat腳本換成.vbs文件,步驟如下



這個時候,你會發現,你的計劃程序任然在進行,但是再也看不到煩人的dos窗口啦,這樣也就實現了linux下的crontab的功能啦。
總結
ok,弄這個,包括測試,也花了不少時間,但是編程的樂趣不就是對未知的探索嗎? laravel確實是一個好的框架,接下來,我還會寫關于laravel郵件,隊列等博客。但是突然發現vb好像也挺有用處的,我有不少大膽的想法了
以上這篇laravel Task Scheduling(任務調度)在windows下的使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- Laravel框架實現定時Task Scheduling例子