排除PHP 中的「無法為池分配記憶體」錯誤
PHP 中的「無法為池分配記憶體」錯誤表示APC緩存機制記憶體不足。當 PHP 的內部快取耗盡可用記憶體時,就會發生此錯誤。
錯誤原因
根據提供的答案,此錯誤是由使用 Time To 引起的APC 的即時 (TTL) 為 0。當 APC 的快取記憶體不足時,它會刪除所有快取的項目。雖然這解決了錯誤,但它嚴重降低了 APC 的效率。
解決方案:增加 APC 記憶體分配
要解決此問題,請透過調整apc.shm_size 指令。如果使用共享段內存,請檢查系統限制並根據需要增加 apc.shm_segments。對於 mmap 內存,使用 apc.shm_size 選項進一步擴展內存。
替代解決方案
如果無法增加記憶體分配,請考慮實作過濾器以防止不常存取的 PHP檔案被快取。
避免將 TTL 設為 0
切勿將 TTL 設為 0,因為它會破壞 APC 的預期功能。此設定會降低 APC 的效率,並否定其作為快取機制的價值。
監控與調整
使用 apc.php 工具定期檢查 APC 配置。為記憶體分配留出 20% 的安全裕度並監控使用情況,以確保其保持穩定。
建議的記憶體分配
預設的 32MB 記憶體分配通常是不夠的。分配足夠的記憶體來快取大多數 PHP 檔案。對於記憶體容量較大的伺服器,請考慮為 APC 分配幾 GB。
排除開發網站
要最佳化快取效率,請從 APC 快取中排除開發網站。
以上是## 如何修復 PHP 中的「無法為池分配記憶體」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!