1. 程式人生 > >linux使用crontab實現PHP執行定時計劃任務

linux使用crontab實現PHP執行定時計劃任務

首先說說cron它是一個linux下的定時執行工具。根使用者以外的使用者可以使用 crontab 工具來配置 cron 任務。所有使用者定義的 crontab 都被儲存在/var/spool/cron 目錄中,並使用建立它們的使用者身份來執行。要以某使用者身份建立一個 crontab 專案,登入為該使用者,然後鍵入 crontab -e 命令來編輯該使用者的 crontab。該檔案使用的格式和 /etc/crontab 相同。當對 crontab 所做的改變被儲存後,該 crontab 檔案就會根據該使用者名稱被儲存,並寫入檔案 /var/spool/cron/username 中。cron 守護程序每分鐘都檢查 /etc/crontab 檔案、etc/cron.d/ 目錄、以及 /var/spool/cron 目錄中的改變。如果發現了改變,它們就會被載入記憶體。這樣,當某個 crontab 檔案改變後就不必重新啟動守護程序了。

安裝crontab:

yum install crontabs

說明:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置

檢視crontab服務狀態:service crond status

手動啟動crontab服務:service crond start

檢視crontab服務是否已設定為開機啟動,執行命令:ntsysv

加入開機自動啟動:  chkconfig –level 35 crond on

crontab命令:

功能說明:設定計時器。

語  法:crontab [-u <使用者名稱稱>][配置檔案] 或 crontab [-u <使用者名稱稱>][-elr]

補充說明:cron是一個常駐服務,它提供計時器的功能,讓使用者在特定的時間得以執行預設的指令或程式。只要使用者會編輯計時器的配置檔案,就可以使 用計時器的功能。其配置檔案格式如下:
Minute Hour Day Month DayOFWeek Command

引數:
-e  編輯該使用者的計時器設定。
-l  列出該使用者的計時器設定。
-r  刪除該使用者的計時器設定。
-u<使用者名稱稱>  指定要設定計時器的使用者名稱稱。

crontab 格式:

基本格式 :

分鐘   小時   日   月   星期   命令

*        *      *    *     *       *

第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列 表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列是要執行的命令

記住幾個特殊符號的含義:
“*”代表取值範圍內的數字,
“/”代表”每”,
“-”代表從某個數字到某個數字,
“,”分開幾個離散的數字

# Use the hash sign to prefix a comment
# +—————- minute (0 – 59)
# | +————- hour (0 – 23)
# | | +———- day of month (1 – 31)
# | | | +——- month (1 – 12)
# | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed

crontab幾個例子如下:

(1)第一個例子。

30 21 * * * /etc/init.d/nginx restart
每晚的21:30重啟 nginx。

(2)第二個例子,也就是本教程測試的例子

* * * * * /usr/bin/php -f /root/test.php >> test.log

每一分鐘執行/root/test.php檔案,將結果輸出到test.log中。

完成了上面基礎工作後,就來看看怎麼使用crontab定時執行PHP指令碼:

(1)我在/root下新建test.php檔案,內容如下:

<?php
        #!/usr/bin/php -q
        echo  date('Y-m-d H:i:s')."from http://www.phpddt.com \n";
?>

說明:你可以用whereis php查詢php執行檔案位置。

(2)然後crontab -e編寫如下shell:

* * * * * /usr/bin/php -f /root/test.php >> test.log

說明:test.php必須為可執行檔案:chmod +x test.php

測試結果很正常,截圖如下:


當然你可以用使用crontab -e繼續新增任務,在/var/spool/cron下你可以看到一個root檔案。
windows下直接用windows計劃任務,通過bat開啟網頁就可以了,不像linux這麼複製。