Unsere Datenbank ist oft sehr groß und die Ergebnismenge einer Abfrage ist ebenfalls sehr groß, was Speicher verschwendet. Um die Speichernutzung zu reduzieren, können wir den Batch und jede Methode von yii2 verwenden .
Um es klarer zu machen, simulieren wir ein Szenario und verwenden dann das Debug von yii2, um die Speichernutzung unter den Methoden „all“ und „batch/each“ anzuzeigen.
Vorbereitung beginnen
Erstellen wir zunächst eine Tabelle, das ist ganz einfach.
Sie sehen, es enthält die Primärschlüssel-ID, den Mitgliedsnamen, den Benutzernamen und die Provinz. Jetzt ist es leer.
Dann haben wir eine Schleife ausgeführt
set_time_limit(0); for($i=1;$i<=10000;$i++){ Yii::$app->db->createCommand()->insert("user",[ 'username'=>'abei'.$i, 'province'=>'北京市' ])->execute(); }
Nach der Ausführung wissen Sie, dass unsere Datenbank 10.000 Datensätze enthält, und jetzt beginnen wir mit dem Vergleich.
Vergleich
Der Einfachheit halber schreiben wir den Schleifenkörper direkt in die Ansicht, wie zum Beispiel den folgenden Code, Sie können ihn auf jeden Fall verstehen.
$query = new \yii\db\Query(); $query->from('user'); foreach($query->all() as $user){ echo $user['username']; echo "<br/>"; }
Das Ergebnis?
Belegt 15,306 MB Speicher
OK, jetzt wollen wir sehen, ob die Tricks von Batch und jedem Speicher sparen.
$query = new \yii\db\Query(); $query->from('user'); foreach($query->batch() as $users){ foreach($users as $user){ echo $user['username']; echo "<br/>"; } }
Das Ergebnis?
Tatsächlich wird die Hälfte des Speichers gespeichert. Jetzt nimmt es nur noch 8.077 MB ein
Das Gleiche
$query = new \yii\db\Query(); $query->from('user'); foreach($query->each() as $user){ echo $user['username']; echo "<br/>"; }
jede Aufführung ist auch recht gut
Ergebnis
Wenn wir alle oder einen großen Datenstapel auf einmal lesen müssen, können wir die Verwendung von Batch und Each in Betracht ziehen. Mit dieser kleinen Codeoptimierung können Sie die Hälfte des Speichers einsparen.
PHP-Website für Chinesisch, es gibt viele kostenlose Yii-Einführungs-Tutorials, jeder ist willkommen, es zu lernen!
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen yii2 Batch und Each. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!