<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// フロントセクション,記事の内容とは何の関係もありません</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"この記事では、詳細に紹介します PHP で使用されます mysqli_stmt::store_result ベストプラクティス。"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 記事のテキストパーツ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h2>私たちが使用するのに役立つベストプラクティスは何ですか mysqli_stmt::store_result メモリリークの問題を避けてください?</h2>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>使用中 PHP の <code>mysqli ";エコー 「 単にラインごとにデータを取得するだけで、 bind_result()とfetch()で十分であり、結果セット全体をキャッシュする必要はありません。
」 ;エコー」$ stmt = $ mysqli- > prepare( '選択id、name from users'); $ stmt- > execute(); $ stmt- > bind_result( $ id 、 $ name ); while( $ stmt- > fetch()){echo $ id 。 ' - '。 $ name ; } // store_resultは呼び出されません、メモリ$ stmt- > close()を保存します; ";エコー 「
非常に大きなテーブルでは、キャッシュされた結果セットが多くのメモリを取ります。制限およびオフセットされたページネーションクエリを使用してオフセットすることをお勧めします
。エコー」$ page = 0; $ limit = 100; $ stmt = $ mysqli- > prepare( 'select * from big_table lime?、?、'); $ stmt- > bind_param( 'ii'、 $ page * $ lime 、 $ lime ); $ stmt- > execute(); $ stmt- > store_result(); //プロセスデータ... $ stmt- > free_result(); $ stmt- > close(); ";エコー "
store_result()が呼び出されたとしても、ステートメントオブジェクトが閉じられていない場合、メモリはリリースされない場合があります。各操作が完了した直後にstmtを閉じる習慣を身に付けます。
」エコー 「複雑なロジックでは、例外が中央にスローされている場合、 free_result()とclose()が呼び出されることを確認する必要があります。
」 ;エコー」
試すす {
$ stmt = $ mysqli- > prepare( 'select * from users'); $ stmt- > execute(); $ stmt- > store_result(); // process data}最後に{if( $ stmt ){ $ stmt- > free_result(); $ stmt- > close(); }} "; echo "要約:
mysqli_stmt :: store_resultを使用する鍵は、リソースをタイムリーにリリースし、一度にキャッシュされたビッグデータを避け、ステートメントオブジェクトを閉じるという良い習慣を開発することです。これらのベストプラクティスを通じて、メモリリークの問題は効果的に回避でき、アプリケーションの安定性とパフォーマンスを改善できます。
関連タグ:
mysqli_stmt