フォルダーにはXMLファイルが含まれていますが、それらをデータベース上で処理するPHPスクリプトがあります。
現在、サーバーはPHPバージョン5.3.10を実行しており、ループ内のZEND_MM_HEAP
によってトリガーされたメモリの問題について バグレポート があります。
これにより、PHPがメモリを適切に解放せず、エラーとスクリプトクラッシュが発生します。
zend_mm_heap is corrupted
いくつかの solutions が見つかりましたが、サーバー設定にアクセスできません。
これに対処するために、ループを処理する次のbashスクリプトを準備し、PHPスクリプトはXMLファイルの処理によってのみ責任を負います。
#!/bin/bash
# Check for files to process
# If files are present, call
# the PHP script
DIR="/path/to/dir/with/files"
while [ "$(ls -A $DIR)" ]; do
php /path/to/php/script/myscript.php
done
私の目標は、このbashメモリの割り当てを制限して(メモリと仮想メモリ)、問題が発生した場合にシステムがハングするのを防ぐことです。
私の質問は:
このシェルスクリプトで使用されるメモリを特定の量に制限するにはどうすればよいですか?
以下を実行して、Bashスクリプトによってメモリ使用量を制限できます。
メモリ使用量をkb(この例では2GB)に制限します。
ulimit -m 2048000
仮想メモリの使用を制限する:
ulimit -v 2048000
仮想メモリ制限をハード制限に設定し、この制限を超えるとプロセスが強制終了されるようにします。
ulimit -H -v
これであなたがやりたいことができると思います。