顯示廣告
隱藏 ✕
Disp BBS guest 註冊 登入(i) 線上人數: 54
看板 Knuckles_note
作者 Knuckles(阿德)
標題 [PHP] 使用crontab工作排程定時執行php程式
時間 2010年01月28日 Thu. AM 03:47:34


安裝 php 執行檔

ubuntu 使用
$ sudo apt-get install php5-cli

centos 使用
$ sudo yum install php-cli


找出 php 執行檔的位置
$ which php

/usr/bin/php

參考: http://www.hkcode.com/programming/414
要用 crontab 自動執行 php 程式,可以這樣做:

◆ 方法一

1. 在 php 程式的第一行加入:

#!/usr/bin/php -q

2. 將 php 程式給予可執行權限:

chmod +x test.php

3. 執行 crontab -e,然後加入以下內容:

00 00 * * * /mypath/test.php >> /mypath/test.log
以上語法會在每天的零時零分執行 /mypath/test.php
執行結果加進 /mypath/test.log

*/10 * * * * /mypath/test.php >> /mypath/test.log
以上語法會在每十分鐘執行一次 /mypath/test.php


◆ 方法二

另一個方法是不用在 php 程式檔的第一行加入 "#!/usr/bin/php -q",不用執行權限
可以省略第一步及第二步,
直接執行 crontab -e,並輸入以下內容:

00 00 * * *  /usr/bin/php -q /mypath/test.php >> /mypath/test.log

這個方法的結果跟方法一的結果相同。


另外要注意用這個方法執行的PHP程式中不能使用php檔案的相對路徑
因為目前的工作目錄被設為 執行檔 /usr/bin/php 的路徑了

可將 crontab 的指令先加上 cd /mypath;
00 00 * * *  cd /mypath; /usr/bin/php -q /mypath/test.php >> /mypath/test.log


或是在 php程式中使用 $dir = dirname(__FILE__); 取得此php檔的絕對路徑
要讀取其他檔案時,前面再加上 $dir
像這樣: require($dir."/include/function.php");



開啟 error_log

修改 /etc/php.ini

尋找 ;error_log = php_errors.log
改成 error_log = /var/log/php_errors.log

這樣使用php cli執行時產生的錯誤記錄就會被存在 /var/log/php_errors.log

--
※ 來源: DISP BBS (http://disp.twbbs.org)
※ 作者: Knuckles  來自: 114.43.113.83  時間: 2010-01-28 03:47:34
※ 編輯: Knuckles 時間: 2014-08-27 03:25:30
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 6221 
※ 文章分類: 網頁程式 PHP
terrykyo 轉錄至看板 terrykyo 時間:2011-04-04 01:57:39
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇