Heim > PHP-Framework > YII > Was ist der Unterschied zwischen yii2 Batch und Each

Was ist der Unterschied zwischen yii2 Batch und Each

爱喝马黛茶的安东尼
Freigeben: 2019-12-09 10:58:58
Original
3966 Leute haben es durchsucht

Was ist der Unterschied zwischen yii2 Batch und Each

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.

Was ist der Unterschied zwischen yii2 Batch und Each

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",[
        &#39;username&#39;=>&#39;abei&#39;.$i,
        &#39;province&#39;=>&#39;北京市&#39;
    ])->execute();
}
Nach dem Login kopieren

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(&#39;user&#39;);
foreach($query->all() as $user){
    echo $user[&#39;username&#39;];
    echo "<br/>";
}
Nach dem Login kopieren

Das Ergebnis?

Was ist der Unterschied zwischen yii2 Batch und Each

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(&#39;user&#39;);
foreach($query->batch() as $users){
        foreach($users as $user){
        echo $user[&#39;username&#39;];
        echo "<br/>";
    }
}
Nach dem Login kopieren

Das Ergebnis?

Was ist der Unterschied zwischen yii2 Batch und Each

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(&#39;user&#39;);
foreach($query->each() as $user){
    echo $user[&#39;username&#39;];
    echo "<br/>";
}
Nach dem Login kopieren

jede Aufführung ist auch recht gut

Was ist der Unterschied zwischen yii2 Batch und Each

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage