次のコードブロックを実行しているときに、PHPがフィードバックやエラーなしで障害を起こしている理由(Windowsエラーログを超えて、php5障害モジュールphpの障害)を理解するのに苦労しています:
$projects = array();
$pqRes = $connection->getResult("SELECT big query");
//build an array by project id
while($record = sqlsrv_fetch_array($pqRes))
{
if(! array_key_exists($record['ProjectID'],$projects))
{
$projects[$record['ProjectID']] = array();
}
$projects[$record['ProjectID']][] = $record; //this line faults php after about 9100 records
}
オブジェクトまたは配列がSQLリソースからプルされても、結果は同じであり、問題のある行は配列の割り当てです。
この割り当てにより、約9100レコード後にphpで障害が発生します。
このループがカウントされて実行の終了が制御された場合、phpが約25 MBのメモリを消費したことがわかります。その構成により、256が許可されます。
障害が発生したレコードは常に同じであるとは限りません。3つまたは4つのインデックスによって異なる場合があります。
コードは実際にはまったく無意味ですが、同じproductIDのレコードをグループ化する方法についてはラウンドアバウトですが、phpが突然死ぬ原因となる可能性があることを知りたいと思っています。
御時間ありがとうございます。