我有超過 60% 的可用 RAM,但我無法運行簡單的 php 文件

我有超過 60% 的可用 RAM,但我無法運行簡單的 php 文件

.php我正在嘗試在本地環境中運行一個簡單的檔案:
(Ubuntu 15.10 - Intel® Core™ i7-4600U CPU @ 2.10GHz × 4 - 64 位元 - 8GB RAM)

螢幕截圖

所以你會看到我有超過 60% 的可用 RAM,但我不明白為什麼我總是出現這個錯誤:

Erreur : Allowed memory size of 4244635648 bytes exhausted (tried to allocate 4294967674 bytes).

我嘗試遵循此類似問題的解決方案:關聯。但沒有解決我的問題。

謝謝

答案1

PHP 有一個設定限制單一腳本可以使用多少記憶體。如果超過該值,系統的總 RAM 量是多少都沒有關係。

如果您在控制台上執行,影響它的檔案可能是 /etc/php5/cli/php.ini 並且有一行內容如下:

memory_limit = XXXXXXX

若要完全刪除限制,請將其變更為:

memory_limit = -1

然而,正如其他人評論的那樣,您的腳本已經嘗試使用超過 4 GB 的 RAM。也許您應該重新考慮您正在做的事情,或者尋找程式碼中可能導致某種無限循環的錯誤。即使是最困難的任務,大多數 PHP 腳本(甚至 CLI 腳本)也應使用少於 256 MB 的空間。 PHP 的設計目的不是將 2 GB 檔案載入到記憶體中並在變數中處理,或將整個資料庫轉儲到陣列中。與我共事過的許多程式設計師都犯過這類錯誤。相反,將該儲存放在最適合的地方 - 將其保留在資料庫中並逐行處理它,或將其保留在檔案系統上並執行相同的操作。

如果這是一個 Web 腳本,而不是您在 CLI 上運行的腳本,您可能不想弄亂內存限制設置,至少不要在 4 GB 或更多附近設置。對於為多個客戶端提供服務的 Web 伺服器來說,這是一個壞主意。

相關內容