2013-01-16 47 views
6

Possible Duplicate:
What is causing 「Unable to allocate memory for pool」 in PHP?的Symfony無法爲池分配內存

今天,我發現了一個錯誤:

ErrorException: Warning: require() [function.require]: Unable to allocate memory for pool. in /symfony/symfony/src/Symfony/Component/ClassLoader/DebugClassLoader.php line 82 

它是一種奇怪的錯誤,如果我重新加載頁面有時2個文件有這個錯誤,其他時間全部文件。

這是在我的JS和CSS文件。

回答

19

此錯誤通常與替代PHP緩存(APC)相關,該替代PHP緩存是PHP的自由和開放操作碼緩存。其目標是爲緩存和優化PHP中間代碼提供一個免費的,開放的,強大的框架。編輯/etc/php.d/apc.ini,請輸入:

# vi /etc/php.d/apc.ini 

確保mktemp的風格file_mask傳遞給MMAP模塊是正確的,有效的一個:

apc.mmap_file_mask=/tmp/apc.XXXXXX 

下一頁確保每個共享內存段的大小,M/G後綴根據您的要求設置正確。在我的情況下,它被設置爲8M:

apc.shm_size=96M 

您需要調整的秒緩存條目被允許在一個插槽閒置的情況下,其它項需要該緩存條目插槽數量:

apc.ttl=3600 

的秒的用戶高速緩存條目被允許在一個時隙空閒的情況下被另一條目所需要這個高速緩衝存貯器入口槽數:

apc.user_ttl=3600 

的秒數,一個高速緩存條目可保持在垃圾收集列表上。

保存並關閉文件。確保您按照您的要求調整值。重新啓動Apache 2 web服務器: PHP應用程序/控制檯高速緩存:

# service httpd restart 
+0

有時候,這個問題可以通過只清除緩存來解決清楚 – kakoma

+0

如上所述,清除緩存可以提供幫助,但我也不得不重新啓動Apache以解決問題。 – beterthanlife