[英]Zend php memory memory_limit
所有,
我正在基於Zend Framework的Web應用程序上工作。 我們一直在開發服務器上遇到內存不足的錯誤:
允許的XXXX字節內存大小已用盡(嘗試YYYY ...
我們在php.ini中不斷增加memory_limit,但現在已超過1000兆。 正常的memory_limit值是多少? php / Zend中常見的懷疑內存不足的東西是什么? 我們正在使用Propel ORM。
感謝您的所有幫助!
更新我無法在Windows環境中重現此錯誤。 如果將memory_limit設置為低(例如16M),則會出現相同的錯誤,但是“嘗試分配”的數量始終是合理的。 例如:(嘗試分配13344字節)如果我在(Fedora 9)服務器上將內存設置得很低(例如16M),則會得到相同的結果。 一致,合理的內存不足錯誤。 但是,即使在我們的服務器上將內存限制設置得很高(例如128M),也許每周一次,我也會收到一個瘋狂的巨大內存錯誤:(試圖分配1846026201字節)。 我不知道這是否可以進一步說明正在發生的事情。 我們正在使用propel 1.5。 聽起來實際的版本將在本月晚些時候發布,但是看起來其他任何人都不會遇到這個問題。 我不知道Propel是問題所在。 我們正在Linux機器上使用Zend Server和php 5.2,在本地使用5.3。
還有其他想法嗎? 我有一張票可以在Linux機器上安裝Xdebug。
謝謝,
-rep
一般來說,在PHP 5.2和/或PHP 5.3中,我傾向於認為memory_limit
的“太多”超過了32M
:
16M
通常是不夠的 32M
就足夠了 64M
意味着服務器將無法處理我們想要的盡可能多的用戶。
當腳本到達memory_limit
,通常的問題是試圖將過多的數據加載到內存中。 幾個例子:
file
或file_get_contents
類的函數或與XML相關的函數/類將一個大文件加載到內存中 考慮到您正在使用ORM,您可能處於以下情況:
您的應用程序在內存不足時到底在做什么。 可能有很多原因。 我會說最常見的是將過多的數據分配給數組。 您的應用程序是否按照這些原則做任何事情?
您發生了兩種情況之一,也許兩者都有:
我認為這與巡航控制系統的部署有關。 當有人部署新代碼時(或剛部署新代碼后),我只會收到非常高的內存錯誤(按演出順序)。 由於錯誤總是指向“ require_once”行,因此這也有一點意義。 每次收到錯誤時:致命錯誤:第2行/directory/file.php中的內存不足(已分配4456448)(試圖分配3949907977字節)
我將“ require_once”行替換為:class_exists('Ingrain_Security_Auth')|| require('Ingrain / Security / Auth.php');
到目前為止,我已經將該行替換為3個文件,並且沒有其他內存問題。 任何人都可以對可能發生的事情有所了解嗎? 我正在使用Cruise Control進行部署。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.