我的一個腳本需要大內存。而可能是因爲這個我收到以下錯誤php memory_limit問題
Fatal error: Out of memory (allocated 42729472) (tried to allocate 32 bytes)
我試圖用的ini_set(「memory_limit的」,「256M」)來改變memory_limit的;在我的頁面頂部,但我仍然得到相同的問題。我也試過ini_set('memory_limit','512M');但沒有運氣。
我的一個腳本需要大內存。而可能是因爲這個我收到以下錯誤php memory_limit問題
Fatal error: Out of memory (allocated 42729472) (tried to allocate 32 bytes)
我試圖用的ini_set(「memory_limit的」,「256M」)來改變memory_limit的;在我的頁面頂部,但我仍然得到相同的問題。我也試過ini_set('memory_limit','512M');但沒有運氣。
這在大約42M後崩潰,這表明PHP解釋器沒有得到備忘錄。在帶有phpinfo()
輸出的測試頁中嘗試相同的ini_set()
並查找內存限制。
您能否將它設置在php.ini
文件中?
是從php.ini設置它的工作?什麼可能是它沒有從ini_set() – Prakash 2010-09-20 08:20:21
http://php.net/manual/en/ini.core.php工作的問題 – teemitzitrone 2010-09-20 09:24:24
你有權訪問php.ini文件嗎?然後在那裏更改memory_limit值。
你還應該分析你的腳本。很多數據庫事務?他們中的很多人在循環?很多循環?很多臨時變量?巧妙使用unset可以產生巨大的差異。
也很高興知道:Performance Considerations和Garbage Collection
編輯(可能的回答你的問題,爲什麼memory_limit
不ini_set
工作)
memory_limit integer This sets the maximum amount of memory in bytes that a script is allowed to allocate. This helps prevent poorly written scripts for eating up all available memory on a server. Note that to have no memory limit, set this directive to -1.
Prior to PHP 5.2.1, in order to use this directive it had to be enabled at compile time by using --enable-memory-limit in the configure line. This compile-time flag was also required to define the functions memory_get_usage() and memory_get_peak_usage() prior to 5.2.1.
When an integer is used, the value is measured in bytes. Shorthand notation, as described in this FAQ, may also be used.
來源:php.net
我以前有similar issue。在我的情況下,這是suhosin補丁,阻止我的腳本獲得更多的內存。
什麼操作導致此錯誤?你需要調試你的代碼來隔離造成這種情況的原因。另外,你在哪裏調用'ini_set('memory_limit','512M');',本地機器?託管網站? – 2010-09-20 07:42:10