用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í)行的清單。例如
&nbs p; 0 0 1,15 * * fsck /home
&nbs p; 1 * * * * /home/gull/onlinnumber
每一行代表一項(xiàng)排定的工作,在指令前為排定的時(shí)間,總共有5個(gè)欄位,以空格間隔,由左到右依序如下:
欄位 &nbs p; 說(shuō)明
---------------------- ----
分鐘 從00到 99
點(diǎn)鐘 從0到 24
日 &nbs p;從01到31
月 &nbs p;從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)
新聞熱點(diǎn)
疑難解答
圖片精選