-1

SQL DB からデータを取得する PHP 関数があります。odbc_result の実行中にこの致命的なエラーが発生することがあります

  • ステップ 30 から 60 | メモリ 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からデータを取得しようとしましたが、まったく同じフィールドを取得しようとすると、そのエラーも発生します。それは、DB と PHP の関係に関係しているようです。Linuxサーバーでfreetdsドライバーを使用しています。

SQL Server Management でデータを取得すると、問題はありません。

4

2 に答える 2

1

おそらく、終わりのないループ、またはデータを割り当て続ける再帰的に呼び出される関数に関連しています。

あなたは試すことができます:

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

しかし、私が正しければ、そのエラーが再び発生します。その場合は、ループと再帰呼び出しを探します。

于 2012-12-19T09:47:26.620 に答える