PHPのメモリ回りの情報

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