sql >> データベース >  >> RDS >> Mysql

単一のPDOクエリで予期せずPHPのメモリ制限に達しましたか?

    Ding ding ding!

    MySQLに接続する場合、PHPはバッファリングされたクエリ を使用するのが好きです。 。これは、接続に使用している方法に関係なく当てはまります。バッファリングされたクエリを使用する場合、要求時にフェッチされるのではなく、結果セット全体がすぐにフェッチされます。これは通常です ラウンドトリップが少ないため、パフォーマンスに優れています。

    しかし、PHPのすべてのように、落とし穴があります。バッファリングページに記載されているように:

    PHP 5.3を使用しています。これは、mysqlndを使用している可能性が高いことを意味します。

    ここで、バッファリングされたクエリをオフにする必要があります。これは、MySQLへのすべてのPHPインターフェースで異なる方法で行われます:

    • PDOの場合、PDO::MYSQL_ATTR_USE_BUFFERED_QUERYを設定する必要があります falseの属性 。
    • mysqliの場合、MYSQLI_USE_RESULTを渡す必要があります queryに対して定数 メソッド。
    • mysqlの場合、mysql_unbuffered_queryを呼び出す必要があります mysql_queryの代わりに 。

    詳細と例はページにあります。

    バッファリングされていない大きな脂肪のクエリの落とし穴!

    あなたはしなければならない 別のクエリを発行する前に、ステートメントハンドルを適切に閉じ、結果セットを解放します。

    これを行わないと、エラーが発生します。




    1. ランダムな日付で行を更新する方法

    2. PHPを使用してMySQLデータベースから画像を読み取る方法は?

    3. Oracleデータベースに送信されるすべてのクエリを表示する

    4. postgresqlでクエリを停止/強制終了する方法は?