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 消耗了大约 25mb 的内存,通过它的配置它允许 256。

故障记录并不总是相同的,它可以变化 3 或 4 个索引。

该代码实际上毫无意义,但是以一种循环方式将相同productID的记录分组,但我很想知道它可以做什么可能导致php突然死亡。

谢谢你的时间。

4

1 回答 1

0

我不确定你所说的故障是什么意思。但如果这意味着它使脚本终止,我建议启用错误日志并查看最终错误消息的内容。在任何情况下,它都可能是 PHP 错误,因此始终建议您将其报告给http://bugs.php.net/,因为这是 PHP 开发人员查看最终错误的正确位置。

于 2011-02-21T18:46:57.560 回答