Heim  >  Artikel  >  Backend-Entwicklung  >  Chunk-Set-Verarbeitung in Laravel

Chunk-Set-Verarbeitung in Laravel

炎欲天舞
炎欲天舞Original
2017-08-21 10:20:282332Durchsuche

Wenn Sie Tausende von Eloquent-Ergebnissen verarbeiten müssen, können Sie den Befehl chunk verwenden. Die chunk-Methode ruft ein „chunked“ eloquentes Modell ab und füllt es zur Verarbeitung in den angegebenen Abschluss ein. Mit der chunk-Methode kann der Speicherverbrauch bei der Verarbeitung großer Datensammlungen effektiv reduziert werden:


Flight::chunk(200, function ($flights) {
    foreach ($flights as $flight) {
        //
    }
});


        $all_ark=Arkvolume::chunk(50000, function ($flights) {
            foreach ($flights as $flight) {
               $GLOBALS['something'][] = $flight['id'];
            }
        });

        var_dump($GLOBALS['something'] );exit;

Dieser Absatz Der Code besteht darin, eine 100-teilige Datenaktualisierung auszuführen und nach Abschluss der Ausführung mit weiteren 100 Datenteilen fortzufahren ...
Mit anderen Worten: Es wird jedes Mal ein Datenblock anstelle der gesamten Datenbank ausgeführt.

Es ist zu beachten, dass bei der Verwendung von Chunks mit Filterbedingungen einige Daten fehlen, wenn diese sich selbst aktualisieren. Schauen Sie sich dann den Code an:


User::where('approved', 0)->chunk(100, function ($users) {
  foreach ($users as $user) {
    $user->update(['approved' => 1]);
  }
});

Wenn Sie den obigen Code ausführen möchten, wird kein Fehler angezeigt, aber die where-Bedingung besteht darin, approved nach 0 zu filtern und dann den Wert von user auf approved zu aktualisieren. 1Nachdem die Daten in der ersten Datenbank geändert wurden, werden die Daten im nächsten Datenblock aus den geänderten Daten ausgewählt. Zu diesem Zeitpunkt haben sich die Daten geändert und die Seite wurde ebenfalls um 1 erhöht . Daher wurde nach der Ausführung nur die Hälfte der Daten in den Daten aktualisiert.

Wenn Sie es nicht verstehen, werfen wir einen Blick auf die zugrunde liegende Implementierung von Chunk. Nehmen wir den obigen Code als Beispiel: Wenn insgesamt 400 Daten vorhanden sind, werden die Daten entsprechend 100 Daten in Blöcke unterteilt.

Seite = 1: Zu Beginn ist Seite 1 und 1-100 Daten werden zur Verarbeitung ausgewählt.
Seite = 2: Zu diesem Zeitpunkt werden die
-Werte der ersten hundert Daten angezeigt Sind alle 1, dann filtern Zu diesem Zeitpunkt beginnen die Daten ab dem 101. Element und zu diesem Zeitpunkt Seite = 2, dann sind die verarbeiteten Daten die Daten vor 200-300 approved und noch danach.


Das obige ist der detaillierte Inhalt vonChunk-Set-Verarbeitung in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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