phpのメモリ回り
変数名 | 設定可能場所 | 内容 |
---|---|---|
memory_limit | PHP_INI_ALL | phpスクリプトが利用できるメモリ容量の最大値 |
max_execution_time | PHP_INI_ALL | phpスクリプトが処理し続けられる時間 |
max_inpt_time | PHPスクリプトがPOST/GET等の入力をパースする最大時間 | |
post_max_size | PHP_INI_PERDIR | POSTに許可される最大値 |
upload_max_filesize | PHP_INI_PERDIR | アップロードできる最大ファイルサイズ |
memory_limitは5.2.0以前は8M、5.2.0で16M、それ以降は128Mが規定値になっている
max_execution_timeは30sが規定値、CLIから実行した場合は0s、つまり制限無し
post_max_sizeは8Mが規定値、ファイルアップロードに影響する、upload_max_filesizeより大きくしておく
upload_max_filesizeは2Mが規定値
設定した最大メモリ量を消費するとエラーになる
2行表示、Failed error: Allowed Memory sizeになる
エラー発生コードサンプル
<?php for ($i=0; $i<10000000; $i++) { $a[$i] = $i; } ?>
関数memory_get_usageでPHPに割当てられたメモリ量を取得できる
戻りはバイト単位
memory_get_usage(true)にするとシステムが実際に割当てたメモリ量になる、省略するとemalloc()が利用するメモリ量となる
関数memory_get_peak_usageでPHPに割当てられたメモリの最大値を取得できる
戻りはバイト数
.htaccessで変更可能
この場合、即時反映
vi .htaccess PHP_Value memory_limit 64M
httpd.confで変更可能、ディレクティブに記述
この場合はApache再読み込みで反映
vi httpd.conf PHP_Value memory_limit 64M