顯示廣告
隱藏 ✕
Disp BBS guest 註冊 登入(i) 線上人數: 95
看板 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 累積人氣: 6223 
※ 文章分類: 網頁程式 PHP
terrykyo 轉錄至看板 terrykyo 時間:2011-04-04 01:57:39
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇
看板名稱: 確定(Enter) 取消(Esc) 搜尋(Space)
查詢帳號: 確定(Enter) 取消(Esc) 搜尋(Space)
搜尋: m)m文 b)進板 c)未分類 a)作者 /)標題 q)取消?[q]

搜尋 送出(Enter) 取消(Esc)

回覆文章至: f)看板 m)作者信箱 b)兩者皆是 q)取消?[f]
要引用原文嗎? y)引用原文 n)不引用 a)全部回覆 r)複製原文 q)取消?[y]
轉錄本文章於看板: 1)使用連結 2)使用複製 q)取消 ?[1]
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc) 全部(a)

確定要刪除這篇文章?(可按大U救回) 確定(Enter) 取消(Esc)

刪除理由:

確定(Enter) 取消(Esc)
加到這個分類: 確定(Enter) 下一層(→) 回上層(←) 取消(Esc)
你覺得這篇文章: 1)真讚 2)真瞎 q)取消?[1] (再選一次即可收回)
你覺得這篇文章: 1)值得推薦 2)表示反對 3)單純註解 q)取消?[3]
guest
預覽(Enter) 取消(Esc)
上傳圖片
按ctrl+Enter可輸入下一行。
guest
確定要送出? 確定(Enter) 取消(Esc) 繼續(e)
搜尋: 送出(Enter) 取消(Esc)

▏▎▍▌▋▊▉ 請按任意鍵繼續