2

次のコードブロックを実行しているときに、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が突然死ぬ原因となる可能性があることを知りたいと思っています。

御時間ありがとうございます。

4

1 に答える 1

0

過失とはどういう意味かわかりません。ただし、スクリプトが終了することを意味する場合は、エラー ログを有効にして、最終的なエラー メッセージの内容を確認することをお勧めします。いずれにせよ、これは PHP のバグである可能性があるため、常にhttp://bugs.php.net/に報告することをお勧めします。これは、PHP 開発者が最終的なバグを確認する適切な場所だからです。

于 2011-02-21T18:46:57.560 に答える