2011年1月19日 星期三

PHP Fatal error: Out of memory 解決方式!!

標題好像下的很聳動 XD

今天在聊天的時候遇到有人跟我聊到他的程式會跑出Out of memory的狀況,明明記憶體已經給很大了,還是會這樣。

我之前也常遇到這個狀況,後來發現是轉換文字編碼的function作怪,只要有用到iconv, mb_xxx,這類的文字編碼function就要小心了,因為這類function非常吃記憶體,我之前估算記憶體用量約為被轉換資料的10倍左右,也就是如果你轉1m的資料,他要跟你要10m的記憶體,如果轉10m他就要100m的記憶體,一般人開給apache的記憶體用量通常不會這麼大,這時就會出錯拉~~~


建議再使用iconv這類的function時,請不要偷懶,把你要轉換的內容一行一行抽出來轉,這樣雖然很麻煩,不過會比你debug一整天還快很多!!

還有,這類的function轉出來的文字也要注意是否存在BOM,如果有的話請自行去除!!

沒有留言: