五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 代替bash,書寫PHP daemon (后臺程序)

代替bash,書寫PHP daemon (后臺程序)

文章來源:365jz.com     點擊數(shù):394    更新時間:2009-09-13 11:01   參與評論
   最近在雅虎的一個朋友和我說,以前用bash csh 寫腳本, 它現(xiàn)在都在用PHP 寫后臺程序,覺得PHP的函數(shù)最全,而且很容易用 shell_exec 很容易調(diào)用系統(tǒng)內(nèi)核。
我和他交流了一下寫后臺程序的一些原則,歸納如下。
   首先,要去掉以前寫網(wǎng)頁腳本的一些思維習慣。網(wǎng)頁腳本運行一次以后,就馬上釋放內(nèi)存。而daemon 程序不一樣,它會一直運行一年,甚至幾年。
  1.  作為一個好的習慣,一定要在while (1) {} 這樣一個死循環(huán)里面運行代碼。這樣,只要代碼不出狀況,腳本就不會停止。
  2.  echo 不能用,而是用log 代替。用寫日志的方法代替echo。因為echo 是 向 屏幕輸出一個字符,如果沒有任何輸出的對象,就會報一個致命錯誤。
  3.  如果MYSQL,要每次重新連接MYSQL。
 
function connnect()

    
global $db;
    
if (is_resource($db)) {
        
mysqli_close($db);
    }
    
$db = mysqli_connect("122.225.96.142", 'waihui', 'freebsd@fzm', 'waihui');
}
上面就是連接的一個例子。這個代碼曾經(jīng)被一個高手狠狠的批評了一頓。這個主要是為了防止下面的事情:
mysql 重啟了,$db 變量肯定還是個資源,但是這個資源已經(jīng)無效了。如果再執(zhí)行代碼就會發(fā)生:
mysql has go away 這樣的錯誤。這個會向屏幕輸出,即時關(guān)閉錯誤報告也一樣會輸出。這樣導致整個
腳本運行錯誤,和echo 產(chǎn)生的錯誤一樣。
雖然每次連接數(shù)據(jù)庫有些浪費,但是也只能寧可錯殺1000,也不放過一個。這個錯誤,是大多數(shù)朋友都會犯的
錯誤,很多人和我說這個是mysql的bug,因為,本來寫文件好好的,后來連接帶mysql就出錯了。
其實不是mysql的bug。

4. 新產(chǎn)生的變量,如果不是自動釋放的,要馬上釋放。否則日積月累,程序就要崩潰。很多PHP程序員沒有一點
內(nèi)存管理的概念,覺得內(nèi)存是無限的,隨便用,寫后臺程序一定要注意內(nèi)存的管理。

5. 如果要訪問文件,首先要 clearstatcache, 否則很有可能會不精確的統(tǒng)計,或者
判斷文件是否存在變的不準確了。更要命的是,如果你頻繁打開文件,文件的handle 值會
不斷增加,等到超過整數(shù)的最大值,程序就無法打開文件。很多人的程序,3個月掛一次,
沒有出現(xiàn)錯誤,也沒有出現(xiàn)內(nèi)存問題,很有可能就是每次操作文件前,沒有清除statcache。
Tag標簽: php,后臺程序,daemon

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答!! 點擊進入論壇

發(fā)表評論 (394人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學習

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號