PHP, JavaScript, Ajax, jQuery, ActionScript, Flex, AIR, Facebook App, Linux, Apache, MySQL...

2010年4月22日 星期四

[Linux]使用 PHP 撰寫 Shell Script 及例行性工作排程執行


使用 PHP 撰寫 Shell Script:

PHP 可以當作 shell script 來執行,下面是一段測試的PHP:
PHP程式碼
echo date("Y/m/d");

請根據你的伺服器配置設定以上的 php 路徑。最後儲存檔案後將它 chmod u+x。
然後打入以下指令執行:
[root@linux ~]# /usr/local/php/bin/php -q /path/to/script.php
其中/usr/local/php/bin/php是你的php執行檔的安裝路徑,/path/to/script.php 是程式的儲存位置。

這時便會在 Shell 下看到輸出現時的日期。


例行性工作排程執行:

要將 PHP 放入排程自動執行。只要輸入以下指令便可:
crontab -e

然後系統便會呼叫 vi 編輯器,使用以下格式加入排程工作:
00 05 * * * /usr/local/php/bin/php -q /home/yourname/backup.php > /dev/null 2>&1

以上 /home/yourname/backup.php 是 php script 的絕對路徑,而以上例子是設定成每天早上的 5:00 便會自動執行。

00 05 * * *部份是排程的時間,這5個欄位的意義為:
代表意義 分鐘 小時 日 期 月份
數字範圍 0-59 0-23 1-31 1-12 0-7

週的數字為 0 或 7 時,都代表『星期天』的意思!另外, 還有一些輔助的字符,大概有底下這些:
特殊字符 代表意義
*(星號) 代表任何時刻都接受的意思!舉例來說,範例一內那個日、月、週都是 * , 就代表著『不論何月、何日的禮拜幾的 12:00 都執行後續指令』的意思!
,(逗號) 代表分隔時段的意思。舉例來說,如果要下達的工作是 3:00 與 6:00 時,就會是:
0 3,6 * * * command
時間參數還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!
-(減號) 代表一段時間範圍內,舉例來說, 8 點到 12 點之間的每小時的 20 分都進行一項工作:
20 8-12 * * * command
仔細看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!
/n(斜線) 那個 n 代表數字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進行一次,則:

*/5 * * * * command
很簡單吧!用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!


文章參考

PHP Developer Channel:http://www.phpdc.com/article/2/
鳥哥的 Linux 私房菜:http://linux.vbird.org/linux_basic/0430cron.php

0 意見:

張貼留言