BLOGTIMES
2007/06/17

memory_limitは気休め?

  php 
このエントリーをはてなブックマークに追加

php.iniには実行時に使うことを許すメモリの量を設定するためにmemory_limitというパラメータがあります。もしこの制限を越えるとスクリプトはエラーを吐いて停止しますが、下記のようにini_set()を使って回避できるという話をを見つけました。

ini_set("memory_limit","32000");

そんな強制力のないリソース制限があるものなのかと思っていろいろ調べてみたら、本当に変更の可否がPHP_INI_ALLになっていました。共用サーバなんかはこれでリソース制限している場合も結構あると思うんですが、意外とザルなのかもしれません

というか、こんなに変更が簡単ということは気休め程度っていうことなのかなぁ。php.iniには特定のディレクティブをReadOnlyにするための設定なんてあったかなぁ。

PHP: コア php.ini ディレクティブに関する説明 - Manual

名前 デフォルト 変更の可否 変更履歴
memory_limit "128M" PHP_INI_ALL PHP 5.2.0 より前は "8M"、PHP 5.2.0 では "16M"

memory_limit integer

スクリプトが確保できる最大メモリをバイト数で指定します。この命令は、 正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。 もし、使用可能メモリに制限を設けたくない場合は、 ここに -1 を指定してください。
PHP 5.2.1 より前のバージョンでは、このディレクティブを使うためには、 コンパイル時に configure で --enable-memory-limit を指定しなければなりません。 これは、関数 memory_get_usage() および memory_get_peak_usage() を使用する際にも必要となります。

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2060
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン