2013-02-25 49 views
5

zend_mm_heap corrupted即將出現在我編寫的用於預渲染大型環境的PHP程序上的錯誤消息中。PHP腳本中的損壞堆

我懷疑這是由於在腳本中有太多變量賦值而引起的,儘管我不確定這一點,因爲我編寫的腳本在任何給定時間只有大約20個變量,其中一個是可能可容納500個元素。也就是說,總共迭代次數約爲幾十億。

我糾正了我的懷疑,如果有的話,有什麼可以做的嗎?例如,運行一段時間的腳本,然後將重要的變量轉儲到文件並重新啓動腳本,使其獲取這些變量並繼續?

+0

你已經看過嗎? http://stackoverflow.com/questions/2247977/what-does-zend-mm-heap-corrupted-mean – 2013-02-25 00:31:11

+0

是的,我有。沒有一個答案看起來相關。我沒有使用OB,我正在使用一個對象,但是我嘗試使用過程函數,而錯誤仍然發生,數組的大小通過在添加它之前檢查它來顯式控制,我使用的是Windows等等。 – 2013-02-25 00:33:03

+0

PHP錯誤日誌中的任何內容?有時,即使您的腳本設置爲顯示所有錯誤,也可能存在未在屏幕上顯示的其他信息。 – 2013-02-25 00:35:49

回答

0

我見過這個問題,可以使用phalcon重現它,但它似乎源自APC緩存。我通過從APC切換到zend opcache進行了修復。您可以嘗試禁用APC以查看它是否消失。

最好的我可以從我的調查中得出結論,APC正在做一些記憶,zend正在使用。 PS,它與zend框架沒有任何關係,它是一個與被合併到php中的zend部分有關的錯誤。

0

解決您的問題的方法是下載與您的PHP版本兼容的最新版APC。

您必須強制安裝它才能覆蓋舊版本的APC。這在很多情況下會解決您遇到的問題。