幫客之家(www.Bkjia.com)教程 最近在雅虎的一個朋友和我說,以前用bash csh 寫腳本, 它現在都在用PHP 寫後台程序,覺得PHP的函數最全,而且很容易用 shell_exec 很容易調用系統內核。
我和他交流了一下寫後台程序的一些原則,歸納如下。
以下為引用的內容:
function connnect()
{
global $db;
if (is_resource($db)) {
mysqli_close($db);
}
$db = mysqli_connect("122.225.96.142", 'waihui', 'freebsd@fzm', 'waihui');
}
首先,要去掉以前寫網頁腳本的一些思維習慣。網頁腳本運行一次以後,就馬上釋放內存。而daemon 程序不一樣,它會一直運行一年,甚至幾年。
1. 作為一個好的習慣,一定要在while (1) {} 這樣一個死循環裡面運行代碼。這樣,只要代碼不出狀況,腳本就不會停止。
2. echo 不能用,而是用log 代替。用寫日志的方法代替echo。因為echo 是 向 屏幕輸出一個字符,如果沒有任何輸出的對象,就會報一個致命錯誤。
3. 如果MYSQL,要每次重新連接MYSQL。
上面就是連接的一個例子。這個代碼曾經被一個高手狠狠的批評了一頓。這個主要是為了防止下面的事情:
mysql 重啟了,$db 變量肯定還是個資源,但是這個資源已經無效了。如果再執行代碼就會發生:
mysql has go away 這樣的錯誤。這個會向屏幕輸出,即時關閉錯誤報告也一樣會輸出。這樣導致整個
腳本運行錯誤,和echo 產生的錯誤一樣。
雖然每次連接數據庫有些浪費,但是也只能寧可錯殺1000,也不放過一個。這個錯誤,是大多數朋友都會犯的
錯誤,很多人和我說這個是mysql的bug,因為,本來寫文件好好的,後來連接帶mysql就出錯了。
其實不是mysql的bug。
4. 新產生的變量,如果不是自動釋放的,要馬上釋放。否則日積月累,程序就要崩潰。很多PHP程序員沒有一點
內存管理的概念,覺得內存是無限的,隨便用,寫後台程序一定要注意內存的管理。
5. 如果要訪問文件,首先要 clearstatcache, 否則很有可能會不精確的統計,或者
判斷文件是否存在變的不准確了。更要命的是,如果你頻繁打開文件,文件的handle 值會
不斷增加,等到超過整數的最大值,程序就無法打開文件。很多人的程序,3個月掛一次,
沒有出現錯誤,也沒有出現內存問題,很有可能就是每次操作文件前,沒有清除statcache。
轉自:http://www.cnblogs.com/niniwzw/