<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Section avant,N'a rien à voir avec le contenu de l'article</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Cet article vous présentera en détail PHP Utilisé dans mysqli_stmt::store_result Meilleures pratiques。"</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">// Article Part texte</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h2>Quelles sont les meilleures pratiques qui peuvent nous aider à utiliser mysqli_stmt::store_result Évitez les problèmes de fuite de mémoire?</h2>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>Utilisé PHP de <code>mysqli "; Echo " Si vous obtenez simplement des données ligne par ligne, en utilisant bind_result () et fetch () suffit, et vous n'avez pas à mettre en cache l'ensemble de résultats:
" ; écho "$ stmt = $ mysqli -> préparer ('select id, nom from Users'); $ stmt -> execute (); $ stmt -> bind_result ( $ id , $ name ); while ( $ stmt -> fetch ()) {echo $ id . '-'. $ name ; } // aucun store_result n'est appelé, enregistrant la mémoire $ stmt -> close (); "; Echo "
Pour les très grandes tables, les ensembles de résultats entiers mis en cache prennent beaucoup de mémoire. Il est recommandé d'utiliser des requêtes de pagination limite et compensée, seules les données partielles sont obtenues à la fois:
" ; écho "$ page = 0; $ limit = 100; $ stmt = $ mysqli -> préparer ('select * from big_table limite? ,?'); $ stmt -> bind_param ('ii', $ page * $ limit , $ limit ); $ stmt -> execute (); $ stmt -> store_result (); // Données de traitement ... $ stmt -> free_result (); $ stmt -> close (); "; Echo "
Même si store_result () est appelé, si l'objet de déclaration n'est pas fermé, la mémoire peut ne pas être libérée. Développez l'habitude de fermer STMT immédiatement une fois chaque opération terminée.
" ; écho "Dans une logique complexe, si une exception est lancée au milieu, vous devez vous assurer que Free_Result () et Close () sont appelés:
" ; écho "
essayer {
$ stmt = $ mysqli -> préparer ('select * from utilisateurs'); $ stmt -> execute (); $ stmt -> store_result (); // Données de processus} enfin {if ( $ stmt ) { $ stmt -> free_result (); $ stmt -> close (); }} "; Echo " Résumé:
La clé pour utiliser MySQLI_STMT :: STORE_RESULT est de publier des ressources en temps opportun, d'éviter les Big Data en cache et de développer une bonne habitude de clôturer les objets de déclaration. Grâce à ces meilleures pratiques, les problèmes de fuite de mémoire peuvent être effectivement évités et la stabilité et les performances des applications peuvent être améliorées.
Étiquettes associées:
mysqli_stmt