Maison > cadre php > YII > le corps du texte

Quelle est la différence entre le lot yii2 et chaque

爱喝马黛茶的安东尼
Libérer: 2019-12-09 10:58:58
original
3930 Les gens l'ont consulté

Quelle est la différence entre le lot yii2 et chaque

Notre base de données est souvent très volumineuse, et l'ensemble de résultats d'une requête est également très volumineux, ce qui gaspille de la mémoire. Afin de réduire l'utilisation de la mémoire, nous pouvons utiliser le lot et chaque méthode de yii2. .

Afin de rendre les choses plus claires, nous simulons un scénario, puis utilisons le débogage de yii2 pour afficher l'utilisation de la mémoire sous les méthodes all et batch/each.

Commencer la préparation

Créons d'abord un tableau, c'est très simple.

Quelle est la différence entre le lot yii2 et chaque

Vous voyez, il a l'identifiant de la clé primaire, le nom d'utilisateur du membre et la province. Il est maintenant vide.

Ensuite, nous avons exécuté une boucle

set_time_limit(0);
for($i=1;$i<=10000;$i++){
    Yii::$app->db->createCommand()->insert("user",[
        &#39;username&#39;=>&#39;abei&#39;.$i,
        &#39;province&#39;=>&#39;北京市&#39;
    ])->execute();
}
Copier après la connexion

Après l'exécution, vous savez qu'il y a 10 000 enregistrements dans notre base de données, et maintenant nous commençons à comparer.

Comparaison

Pour plus de commodité, nous écrivons le corps de la boucle directement dans la vue, comme le code suivant, vous pouvez certainement le comprendre.

$query = new \yii\db\Query();
$query->from(&#39;user&#39;);
foreach($query->all() as $user){
    echo $user[&#39;username&#39;];
    echo "<br/>";
}
Copier après la connexion

Le résultat ?

Quelle est la différence entre le lot yii2 et chaque

Occupe 15,306 Mo de mémoire

OK, voyons maintenant si les astuces du batch et chacune économisent de la mémoire.

$query = new \yii\db\Query();
$query->from(&#39;user&#39;);
foreach($query->batch() as $users){
        foreach($users as $user){
        echo $user[&#39;username&#39;];
        echo "<br/>";
    }
}
Copier après la connexion

Le résultat ?

Quelle est la différence entre le lot yii2 et chaque

Effectivement, la moitié de la mémoire est enregistrée. Maintenant, cela ne prend que 8,077 Mo

Le même

$query = new \yii\db\Query();
$query->from(&#39;user&#39;);
foreach($query->each() as $user){
    echo $user[&#39;username&#39;];
    echo "<br/>";
}
Copier après la connexion

chaque performance est également assez bonne

Quelle est la différence entre le lot yii2 et chaque

Résultat

Lorsque nous avons besoin de lire tout ou un grand lot de données à la fois, nous pouvons envisager d'utiliser batch et each. Ce petit peu d'optimisation du code peut vous aider à économiser la moitié de la mémoire.

Le site Web PHP chinois propose un grand nombre de Tutoriels d'introduction Yii gratuits, tout le monde est invité à apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal