ホームページ > バックエンド開発 > PHPチュートリアル > mysql_query を使用して PHP で非常に大きな結果セットをクエリする場合のメモリ過剰問題を解決する方法、phpmysql_query_PHP チュートリアル

mysql_query を使用して PHP で非常に大きな結果セットをクエリする場合のメモリ過剰問題を解決する方法、phpmysql_query_PHP チュートリアル

WBOY
リリース: 2016-07-12 08:57:09
オリジナル
1078 人が閲覧しました

mysql_query を使用して非常に大きな結果セットをクエリする場合、PHP のメモリ不足の問題を解決するにはどうすればよいですか? phpmysql_query

mysql_query を使用して非常に大きな結果セットをクエリする場合、メモリ制限を超えるという致命的なエラーが発生します。 mysql_query はすべての結果をクエリに使用し、その結果セット全体がメモリにキャッシュされるためです。

Mysql クエリには、mysql_unbuffered_query という別のクエリ メソッドも用意されています。この関数は、結果を見つけた直後に結果セットを使用するため、メモリ超過の発生を回避します。ただし、このメソッドを使用すると、クエリ時に結果が返されるため、クエリ時に本社を取得するなどのメソッドが使用できないというデメリットがあります。同時に、この方法を使用する場合、同じデータベース リンク上で他の操作を実行することはできません。他の操作を実行する場合は、まず現在の操作を終了するか、キャッシュされていない SQL クエリによって生成されたすべての結果行を解放するか、再インスタンス化する必要があります。データベースに接続し、他のアクションに新しいリンクを使用します。

以下は、キャッシュを使用する場合とキャッシュを使用しない場合の比較です (クエリされたテーブルには 1,000 万行を超えるデータがあります)。
リーリー

上記で使用した方法では、すべての結果セットをキャッシュします。この関数を実行すると、以下に示すようにメモリ不足エラーが報告されます。


致命的なエラー: E:ProgramDevelopmentRuntimeEnvironmentxampphtdocstesttest.php の 57 行目で、134217728 バイトの許容サイズのメモリが使い果たされました (204800000 バイトを割り当てようとしました)。

コールスタック:

0.0005 135392 1. {main}() E:ProgramDevelopmentRuntimeEnvironmentxampphtdocstesttest.php:0
0.0005 135568 2.test->selecttest() E:ProgramDevelopmentRuntimeEnvironmentxampphtdocstesttest.php:86

0.0055 142528 3. PDOStatement->execute() E:ProgramDevelopmentRuntimeEnvironmentxampphtdocstesttest.php:57


$sth->execute();;
の実行中にメモリ制限を超えました

// $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); からコメントを削除した後、この関数を実行すると、結果セットは次の内容を出力します。

初期メモリサイズ: 144808

リーリー
占有メモリサイズ: 145544

リーリー

占有メモリサイズ: 145544

リーリー

占有メモリサイズ: 145536

リーリー

占有メモリサイズ: 145536

リーリー

占有メモリサイズ: 145536

ご覧のとおり、結果セットをキャッシュせずに結果の行を取得することで占有されるメモリは非常に小さくなります。これにより、メモリ制限を超える問題が解決されます。

興味があるかもしれない記事:

PHP+Mysql+jQuery は Weibo プログラムを公開するための jQuery を実装します

PHP+Mysql+jQuery は情報の動的な表示を実装します
  • jQuery は PHP+MySQL を組み合わせて二次リンク ドロップダウン リストを実装します [例】
  • PHPのmysql_query実行タイムアウトの解決(致命的エラー:最大実行時間…)
  • PHPのmysqli_queryパラメータMYSQLI_STORE_RESULTとMYSQLI_USE_RESULTの違い
  • PHP+jQuery+MySqlに基づいた赤と青(親指)の投票コードの実装
  • jQuery+Ajax+PHP+Mysqlによるページング表示データの実装例解説
http://www.bkjia.com/PHPjc/1110092.html

www.bkjia.com

http://www.bkjia.com/PHPjc/1110092.html技術記事 PHP が mysql_query を使用して非常に大きな結果セットをクエリする場合のメモリ不足の問題を解決する方法 phpmysql_query が非常に大きな結果セットをクエリする場合、メモリ制限を超える致命的なエラーが発生します。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート