2010-07-23 50 views
4

我需要運行一個PHP CLI腳本併爲其提供大量內存(這是一個需要覆蓋大代碼庫的自動文檔生成器)。我有一個功能強大的機器,並已分配5GB到php,在腳本文件中php.ini和inline ini_set('memory_limit','5120M')聲明。PHP CLI腳本如何確定其內存限制?

如果我這些行添加到腳本的頂部:

phpinfo(); 
exit(); 

...它聲稱,它擁有5120M的內存限制,爲我指明。

但腳本仍然出現了錯誤,說

Fatal error: Allowed memory size of 1073741824 bytes exhausted 

...這是1GB,不是5GB我指定。

腳本可能正在尋找哪個地方來確定其內存限制?這在Fedora Linux中運行。

(是的,最終的解決方案可能是重寫腳本以提高效率,但我並沒有把它寫在第一位,所以在我訴諸於此之前,我只想投入資源並看到它如果有效)

回答

5

堆限制屬性是size_t,它是32位機器上的32位。如果以字節爲單位,則會將內存限制限制爲4 GB。您可以嘗試在64位PHP機器上運行它。

編輯:確認,heap-> limit是一個size_t(無符號整數),以字節爲單位。 memory_limit爲-1會將堆 - >限制設置爲4GB,並且不會像文檔所暗示的那樣禁用它。將其設置爲5GB可以將其卷繞到1GB。

+0

它就像滾動舊的視頻遊戲的分數! – gnarf 2010-07-23 14:06:46

+0

我運行了一個64位機器上的分配檢查,但是我的64位php二進制扼流器在490 Megs之後... (這比以前的128M限制更多...但是方式小於新設置的5120M限制...) – ZJR 2010-07-23 14:10:17