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.
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",[ 'username'=>'abei'.$i, 'province'=>'北京市' ])->execute(); }
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('user'); foreach($query->all() as $user){ echo $user['username']; echo "<br/>"; }
Le résultat ?
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('user'); foreach($query->batch() as $users){ foreach($users as $user){ echo $user['username']; echo "<br/>"; } }
Le résultat ?
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('user'); foreach($query->each() as $user){ echo $user['username']; echo "<br/>"; }
chaque performance est également assez bonne
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!