在項目的開發過程中經常會有定時任務的需求,例如按時自動處理訂單狀態或者需要做某個接口的隊列。可是PHP本身對上述場景的支持并是不很好,雖然可以通過配置響應時間的方法讓PHP進程不結束,但從測試和易維護的角度來說,**最實用的方案是通過服務器定時任務來實現**。由于配置Linux定時任務會涉及到很多方面的知識,對于Linux不太熟的開發者容易望而卻步,本文就以最簡單的方式將這種方案實現落地,希望對大家有幫助。
:-: 
流程圖
### 編輯crontab文件
每個用戶都擁有自己的crontab文件,文件包含送交守護進程的一系列指令,通常使用下面的命令對該文件進行編輯:
~~~
> crontab -e
~~~
定時的語法如下:
~~~
* * * * * /WWW/learnlinux/sometask.sh
分鐘 小時 日 月 星期 命令
~~~
上面的意思是,每1分鐘執行一次sometask.sh。5個\*號的位置代表的是執行任務的時間,語法是這樣的:
~~~
“\*”代表所有,
“/”代表循環周期,
“-”代表從某個數字到某個數字的區間,
“,”分開幾個離散的數字
~~~
最簡單的寫法如下:
~~~
30 * * * * 代表每個小時的第30分鐘執行一次
30 6 * * * 代表每天的6點30分執行一次
30 6 15 * * 代表每個月的15號6點30分執行一次
30 6 15 5 * 代表每年的5月15號6點30分執行一次
也可以用星期表示,0代表周日:
30 6 * * 0 代表每個周日的6點30執行一次
~~~
稍微復雜一點:
~~~
*/5 * * * * 代表每隔5分鐘執行一次
30 6 */5 * * 代表每隔5天就在6點30分執行一次
0 2-5 * * * 代表每天的2點到5點鐘的第0分鐘執行一次
20,40 * * * * 代表每個小時的第20和第40分鐘執行一次
~~~
### 創建可執行文件
我們既然規定每分鐘執行一次sometask.sh那么就到相應的目錄下去創建該文件:
~~~
> cd /WWW/learnlinux/
> vim sometask.sh
~~~
這里使用vim創建文件,編輯方法上文中有,sometask.sh文件內容如下:
~~~
#!/bin/sh
curl http://localhost/learnlinux/
~~~
該文件中第一行為固定寫法,第二行用于指定訪問的頁面URL,`curl`命令可以以GET的方式訪問后面的地址,注意:地址不需要添加引號。你可以將這里的URL修改為實際項目中需要被定時訪問的頁面。