-1

我有一个从 SQL DB 获取数据的 PHP 函数。有时我在执行 odbc_result 时遇到这个致命错误

  • 从 60 步到第 30 步 | 内存 191908
  • 第 31 步从 60 | 内存 191908
  • 第 32 步从 60 | 内存 191908
  • 第 33 步从 60 | 内存 191908
  • 第 34 步从 60 | 内存 191892
  • 第 35 步从 60 | 内存 191908
  • 第 36 步从 60 | 内存 191908
  • 第 37 步从 60 | 内存 191892
  • 第 38 步从 60 | 内存 191908
  • 第 39 步从 60 | 内存 191908
  • PHP致命错误:内存不足(分配262144)(试图分配4294967293字节)

这是我从函数中输出的一部分。

有人可以帮我解决这个问题吗?

          while(odbc_fetch_row($exec_query_tblKlantFactuurOpdrachten))
    {
        $dataADDRow_1 = $doc->createElement("tblKlantFactuurOpdrachten");
        $dataADDRow->appendChild($dataADDRow_1);

        $i_1 = 1;
        while($i_1 < $numFields_1)
        {
            echo "Step ".$i_1." from ".$numFields_1." | Memory ".memory_get_usage()."\n";
            $dataFromDB = odbc_result($exec_query_tblKlantFactuurOpdrachten,$i_1);
            $dataADD = $doc->createElement($tmpArr_FieldName_1[$i_1],protectInfo($dataFromDB));
            $dataADDRow_1->appendChild($dataADD);
            flush();
            ++$i_1;
        }
        flush();

    }

我已经尝试通过简单的查询从数据库中获取数据,当我尝试获取相同的确切字段时,我也会收到该错误。所以这似乎与DB和PHP之间的关系有关。我在 linux 服务器上使用 freetds 驱动程序。

当我使用 SQL Server Management 获取数据时,没有问题。

4

2 回答 2

1

它可能与无休止的循环或某些递归调用的函数有关,该函数不断分配数据。

您可以尝试:

ini_set('memory_limit', '-1');

但如果我是对的,您将再次收到该错误。如果是这样,那么寻找循环和递归调用。

于 2012-12-19T09:47:26.620 回答
0

这似乎是 PHP 的 ODBC 处理中的一个错误。

类似这样的东西: https ://bugs.php.net/bug.php?id=51606

试试那里给出的补丁

于 2013-07-09T08:02:51.527 回答