天天看點

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

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

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

當然你可以用使用crontab -e繼續添加任務,在/var/spool/cron下你可以看到一個root檔案。

windows下直接用windows計劃任務,通過bat打開網頁就可以了,不像linux這麼複制。

github:https://github.com/lensh