4

PHP CLIスクリプトを実行し、それに多くのメモリを与える必要があります(これは、大規模なコードベースをカバーする必要がある自動ドキュメントジェネレータです)。私は強力なマシンを持っており、スクリプトファイルphp.iniのインライン宣言とインライン宣言の両方で5GBをphpに割り当てました。ini_set('memory_limit','5120M')

これらの行をスクリプトの先頭に追加すると、次のようになります。

phpinfo();
exit();

...私が指定したように、5120Mのメモリ制限があると主張しています。

しかし、スクリプトはまだエラーになり、次のように言っています

Fatal error: Allowed memory size of 1073741824 bytes exhausted

...これは1GBであり、指定した5GBではありません。

スクリプトがメモリ制限を決定するために探している可能性のある他の場所はありますか?これはFedoraLinuxで実行されています。

(はい、最終的な解決策は、スクリプトをより効率的に書き直すことかもしれませんが、そもそもスクリプトを書きませんでした。そのため、それに頼る前に、リソースを投入して、それが機能するかどうかを確認したいと思います。 )。

4

1 に答える 1

5

ヒープ制限プロパティはsize_tであり、32ビットマシンでは32ビットです。これがバイト単位の場合、メモリ制限は4GBに制限されます。64ビットPHPを使用する64ビットマシンで実行してみてください。

編集:確認済み、heap-> limitはsize_t(unsigned int)であり、バイト単位です。memory_limitが-1の場合、heap-> limitは4GBに設定され、ドキュメントに示されているように無効にはなりません。5GBに設定すると、1GBにラップアラウンドします。

于 2010-07-23T13:53:26.650 に答える