投稿者 |
投稿 |
|
#1 2008 年 11 月 5 日(水) 21:49
|
会員
登録者: 11 2008
返信数: 2
|
初めて投稿させていただきます。よろしくお願いいたします。
まず環境からお知らせします Windows 2003 Server R2 Standard Edition SP2 Apache 2.2.8 PHP 5.2.5
上記の環境で、CPUがCore2など、タスクマネージャで CPUが2個以上見えるマシンで、mb_ereg関数を同時に複数回 呼び出すと、Apacheが停止してしまう現象に悩まされております。
再現方法は、Apache Benchでテスト用ソースを 同時接続数2以上で1000リクエスト程度呼び出すと ほぼ間違いなく再現します。
Apache Benchの実行コマンドは > ab -n 1000 -c 2 該当URL です。
テスト用ソースは次のようなものです。
> mb_ereg("^(\+|\-)?([0-9]*\.)?[0-9]*$", $value);
$valueは配列で、要素には1~12、1~31、2000~2009 など、年・月・日を示す数字がいくつか格納されています。
このような現象について何かおわかりの方がいらっしゃいましたら ご助言いただきたく、よろしくお願いいたします。
石井
|
|
#2 2008 年 11 月 8 日(土) 3:49
|
会員
登録者: 11 2008
返信数: 1
|
Vista+Apache+PHPで、Apacheが落ちまくる現象に悩まされていました者です。 Vista環境で試したところ、ほぼ100%の確率で再現しました。
Windows Vista Ultimate SP1(32bit) Apache 2.2.9 PHP 5.2.6 CPUはCore2 Duo L7500
です。 また、XP環境で試したところ、確率はかなり低くなりますが、やはり再現することを確認しました。
具体的に、どこにどのような問題があるのかは、まだわからないのですが、何かわかりましたら投稿したく思います。
$value は配列で、とありますが、普通の変数でも再現しました。 (配列をそのまま入れると Warning が出ますよね)
|
|
#3 2008 年 11 月 10 日(月) 9:46
|
会員
登録者: 11 2008
返信数: 2
|
silpheed_ktさん返信ありがとうございます。 こちらでも継続調査しておりますが、まだ有力な情報を得られていません。 進展があり次第情報共有したく、よろしくお願いいたします。
また$valueの中身の件ですが、私の記述が不正確でした。実際には $arrvalueが配列で、これを
foreach($arrvalue as $key=>$value) { if (!mb_ereg("^(\+|\-)?([0-9]*\.)?[0-9]*$", $value)) { --- コード --- } }
の形で1つずつmb_eregに渡す形で使用しています。
|