PHP 5.2.0より後では"128M"、PHP 5.2.0 より前は "8M"、PHP 5.2.0 では "16M"となっており、php 5.2.0より前ではかなり少ない値となっています。 このメモリ制限のしくみは、便利でもあり、不便に思うこともあります。 リクエストを処理してレスポンスを返すウェブアプリケーションではメモリを大量に使用することはまれです。memory_limitののおかげでバグを仕込んでしまったループでメモリが消費されてエラーで気づいて助かったことがあります。 いっぽう、バッチ処理のようなスクリプトでは、内容にもよりますがメモリ使用量に気をつけていないと、途中で「PHP Fatal error: Allowed memory size of **** bytes exhausted」が発生して、中断してしまい悲惨です。 これを避けるために、memory_get_usage()でメモリ使用量を調査するデバッグコードを仕込んでおくのは良い習慣といえるでしょう。そして、もしPHP Fatal Error:...が発生してしまったら、まずロジックに問題がないか調べ、それからmemory_limitの値の変更を検討します。 そして、明示的にmemory_limitを指定しておけばphpのバージョンアップによる影響も避けられます(ini_setで設定できるのでスクリプトごとに変えられます)
2011年9月2日金曜日
phpでメモリ使用量に気を使う意味
phpはそのスクリプトで使用するメモリの上限を memory_limit というphp.iniのディレクティブで設定できますが、このデフォルト値はphpのバージョンによって変わります。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿