1. 程式人生 > >crontab 定時執行php指令碼檔案

crontab 定時執行php指令碼檔案

PHP 安裝模式
首先我們必須先確認自己在LINUX Ubuntu 伺服器上php的安裝模式,以CGI 模組還是Apache模組方式安裝? 如果不確定php安裝模式,可以使用 phpinfo() 函式檢視:將<?php phpinfo(); ?> 寫在php檔案中上傳到網站伺服器,訪問該頁面,就在頁面頂部我們找到“Server API”,如果類似“Apache 2.0 Handler”,那麼就是apache模組;否則php是CGI 模式(shell 命令列模式)。這兩種不同的php安裝模式,正對應於前面介紹的ubuntu crontab 定時執行php的兩種解決方法。

CGI 編譯
如果Server API是cgi,那麼在需要cron執行的php指令碼的第一行額外加入一段程式碼#!/usr/bin/php -q(類似PERL語法),指定伺服器中php可執行程式的位置,具體步驟如下:

1. 確認Ubuntu系統已經安裝了php5-cli模組,安裝命令:apt-get install php5-cli。在目錄 /usr/bin/php下生成 php可執行程式。

2.  編輯待定時執行的php指令碼檔案crontab.php,如:

#!/usr/bin/php -q
<?php
$file = “/var/www/”.date(‘H’).’_’.date(‘i’).’_’.date(‘s’).’.txt’;
file_put_contents($file,date(‘Y-m-d’));
?>

3.  編輯 crontab 任務:

開啟終端,輸入命令:crontab -e,

Select an editor.  To change later, run ‘select-editor’.
1. /bin/ed
2. /bin/nano        <—- easiest
3. /usr/bin/vim.tiny

選擇一個Ubuntu編輯器後,編輯/tmp/crontab.AuN7IQ/crontab 檔案:

# m h  dom mon dow   command

在下面新增定時執行命令:

* * * * * php /path/to/your/cron.php

5個星號分別代表定時指定每分、小時、日、月、周。如每天的下午7點執行crontab.php,命令為:

* 19 * * * php /var/www/cron/crontab.php

然後按Ctrl+O儲存,Ctrl+X退出。

4. 執行以下Crontab命令列

Shell> crontab crontab

確認crontab.php的許可權為可執行("chmod 755 /var/www/cron/crontab.php")。

Apache 模組
如果php安裝是以 apache 模式執行的,那麼在要在ubuntu伺服器定時執行的php指令碼開頭就不用加 #!/usr/bin/php  -q 這一行。php指令碼在ubuntu 通過crontab的定時執行通過Lynx瀏覽器的自動訪問來完成。

1.  Lynx瀏覽器安裝。

Lynx瀏覽器是一款輕便的web瀏覽器,使用於大部分Unix 和Linux系統環境。安裝命令:sudo apt-get install lynx。

2. 編輯cron任務,命令crontab -e

注意這個地址最好用絕對地址,包含“http://”的完整url。

3. 再次執行下面的命令列:

Shell> crontab crontab

因為我在ubuntu安裝的是lamp server,所以採用第二種Apache 模組的方法就可以使用crontab定時執行php指令碼程式碼。

crontab執行時間計算

http://tool.lu/crontab/