Windows+Apache での PHP アプリケーションが「メモリ不足 (割り当てられた 422313984) (45792935 バイトを割り当てようとしました)」と表示されて停止しました。
私のマシンには 4GB の物理メモリがありmemory_limit
、PHP.ini ファイルで -1 のディレクティブを設定したため、停止した理由がわかりません。Apacheも再起動しました。
422313984+45792935 バイト以上のメモリを割り当てるには 4GB で十分だと思います。
PHP または Apache にメモリを使用する別の設定はありますか?
パフォーマンスカウンターもまとめてみました。最大メモリ使用量はマシン全体で2GBでした。また、httpd プロセスは 1.3GB を使用しました。
コードを表示することはできませんが、実際にはコードは DBMS から 30000 行 (それぞれ 199 バイト) をフェッチsimplexml_load_string()
し、ループ内で使用して XML に解析します。
コードのデータが小さいか、30000 から 1000 のようにループ期間が短い場合、コードは通常終了します。
別のケースでは、Apache を起動した後の最初の実行は成功します。
何らかのメモリリークが発生していると思います。
実際にエコーを行ったところPHP_INT_SIZE
、PHP は 4 を示しています。おそらく、私の PHP は 32 ビット バージョンです。
Álvaro G. Vicario が次のように指摘するように、メモリ使用量の問題がこのバージョンの PHP にある場合、PHP の 64 ビット バージョンに変更することで解決できますか? また、Windows 用の 64 ビット バージョンの PHP を入手するにはどうすればよいですか? http://windows.php.netで見つかりません