使用php作linux自動(dòng)執(zhí)行腳本(呵呵,超級(jí)好用的技巧)
發(fā)表時(shí)間:2023-08-06 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]最近在用PHP作一社區(qū), 在寫到計(jì)算最高上線人數(shù)時(shí), 成功調(diào)試出把PHP作為shell script直接在服務(wù)器上運(yùn)行. 在作社區(qū)時(shí), 時(shí)常需要統(tǒng)計(jì)上線人數(shù)等數(shù)據(jù). 一般做法是, 把這段代碼放在用戶...
最近在用PHP作一社區(qū), 在寫到計(jì)算最高上線人數(shù)時(shí), 成功調(diào)試出把PHP作為shell script直接在服務(wù)器上運(yùn)行.
在作社區(qū)時(shí), 時(shí)常需要統(tǒng)計(jì)上線人數(shù)等數(shù)據(jù). 一般做法是, 把這段代碼放在用戶login或者某一個(gè)頁(yè)面中, 以便在用戶登錄或訪問(wèn)到該時(shí),觸發(fā)運(yùn)行該代碼. 這樣一來(lái), 會(huì)造成一個(gè)問(wèn)題, 如果該代碼教復(fù)雜, 明顯減慢該頁(yè)的正常調(diào)用速度.
利用PHP 的這種特性,加上linux的crontab指令,即可自動(dòng)定時(shí)執(zhí)行某一個(gè)php文件(統(tǒng)計(jì)在線人數(shù)等).
具體方法:
在安裝PHP的時(shí)候,會(huì)產(chǎn)生一個(gè)可執(zhí)行文件,文件名為php.將它它 copy 到 /usr/local/bin 下.
在終端方式執(zhí)行php程序: php -q onlinnum.php<Enter>
注意到 PHP 原本是應(yīng)用在網(wǎng)頁(yè)應(yīng)用的﹐因此它內(nèi)定會(huì)送出 HTML 的 HEADER﹐但是在此我們是要將 PHP 用作 Shell Script﹐"-q" 就是表示不要送出 HEADER 的意思.你可以試試看不加上 -q 的顯示結(jié)果。
此時(shí)你已經(jīng)可以在終端方式下執(zhí)行PHP 代碼了. 呵呵,可以試試執(zhí)行你以前寫的代碼.
linux命令:cron daemon
這是一個(gè)系統(tǒng)中常駐的服務(wù),功能在于執(zhí)行例行性的工作,如每天一次或每月一次檢查磁盤。cron daemon 會(huì)在每分鐘檢查一次排定的工作表(crontab),看看是否有要執(zhí)行的指令,所有的輸出會(huì)以mail寄給用戶。
設(shè)置 crontab
命令:crontab -e<Enter>
該命令呼叫vi編輯器來(lái)編輯執(zhí)行的清單。例如
0 0 1,15 * * fsck /home
1 * * * * /home/Gull/onlinnumber
每一行代表一項(xiàng)排定的工作,在指令前為排定的時(shí)間,總共有5個(gè)欄位,以空格間隔,由左到右依序如下:
欄位 說(shuō)明
--------------------------
分鐘從00到99
點(diǎn)鐘從0到24
日從01到31
月從01到12
星期從01到07,代表星期一到星期日
*號(hào)表示"每",如每天執(zhí)行,就在第三欄填 *號(hào)
所以上例的兩項(xiàng)工作是:
每月1號(hào)和15號(hào)檢查/home磁盤
每小時(shí)的第一分執(zhí)行/home/Gull/onlinnumber 這個(gè)文件
查看crontab:crontab -l<Enter>
刪除crontab:crontab -r<Enter>
呵呵,到這里,你應(yīng)該知道該怎么利用PHP和crontab命令來(lái)統(tǒng)計(jì)在線人數(shù)了吧?
需要注意:
如果php中有使用數(shù)據(jù)庫(kù),如oracle等,執(zhí)行腳本中還需export Oracle的環(huán)境設(shè)置。因?yàn)閏ron下的腳本執(zhí)行的用戶都是在沒(méi)登陸狀態(tài)下執(zhí)行的,少了很多系統(tǒng)里設(shè)置的環(huán)境變量的值,在連接數(shù)據(jù)庫(kù)的時(shí)候會(huì)出問(wèn)題。