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. 1
Nachdem 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.
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!