Offizielle Erklärungyield
yield生成器
erschien nach php5.5
, das offizielle Dokument erklärt dies: yield
bietet eine einfachere Möglichkeit, einfache Iterationsobjekte zu implementieren. Im Vergleich zur Definition einer Klasse zur Implementierung der Iterator
-Schnittstelle werden der Leistungsaufwand und die Komplexität erheblich reduziert.
Der Kern eines Generators ist ein yield
-Schlüsselwort. Eine Generatorfunktion sieht aus wie eine gewöhnliche Funktion. Der Unterschied besteht darin, dass eine gewöhnliche Funktion einen Wert zurückgibt, während ein Generator viele Werte generieren kann erfordert. Wenn die Generatorfunktion aufgerufen wird, gibt sie ein Objekt zurück, über das iteriert werden kann. yield
ähnelt yield
, der Unterschied besteht jedoch darin, dass return
einen Wert zurückgibt und die Ausführung des Codes beendet, während return
einen Wert an den Code zurückgibt, der eine Schleife durchführt ruft diesen Generator auf und pausiert einfach die Ausführung der Generatorfunktion. yield
Übrigens möchte ich Ihnen die PHP-Version der nicht gepufferten Abfrage
vorstellen, was das Lesen der Datenzeile bedeutet Zeile in den PHP-Laufspeicher Es ist kein einmaliges Einlesen in den PHP-Laufspeicher. Wie wir alle wissen, verfügt PHP über viele integrierte Funktionen, die uns bei der Verarbeitung von Daten helfen können betrieben werden, aber der PHP-Laufspeicher ist begrenzt und der Standardwert ist 128 MB. Hinweis: Da die Verbindung nicht gepufferter Abfragen mit der Datenbank lange dauert, kann es zu langsamen Abfragen, Tabellensperren usw. kommen, die mehr MySQL-Ressourcen verbrauchenrelativ ungepuffert Die Abfrage ist eine gepufferte Abfrage:
Wenn Sie eine zwischengespeicherte Abfrage verwenden, explodiert der PHP-Speicher direkt und es ist nicht genügend Speicher vorhanden. Okay, der Hauptzweck besteht hier darin, den Ertrag hervorzuhebenErtragsleistung
Der Generator wird einen sehr großen Einfluss auf die Leistung von PHP haben AnwendungenPHP-Code spart beim Ausführen viel SpeicherEs eignet sich besser zum Berechnen großer DatenmengenErtragsbetriebVerwenden
Mit Generatoren können Sie Code in einen foreach-Block schreiben, um einen Datensatz zu durchlaufen, ohne ein Array im Speicher zu erstellen, was Ihre Speichergrenze erreichen oder erhebliche Verarbeitungszeit in Anspruch nehmen würde. Stattdessen können Sie eine Generatorfunktion schreiben, genau wie eine normale benutzerdefinierte Funktion, und statt einer normalen Funktion, die nur einmal zurückgibt, kann der Generator so oft wie nötig nachgeben, um die Werte zu generieren, über die iteriert werden muss. Erklärung mit Beispielen Ich habe hier gerade ein Array erstellt, um Ihnen zu zeigen, dass Sie es normalerweise sind Das Gleiche gilt für die Ausgabedaten der Betriebsdatenbank. Beim Konvertieren in ein Array//仓库库存扣除测试 public function cangku_stock() { //set_time_limit(0); //表示永久运行,这里我是测试array的时候用到的 $order_info = $this->read_temp_api_order_info(10); //这里我就测试了10条数据,效果是看不出来的 foreach($order_info as $temp_api_order_info){ dd($temp_api_order_info); //打印出来看看数据 //处理数据 $api_ware_id = $this->o->getCangkuApiUrl() .'ware/program/addOutWare'; $out_wares = api_request($api_ware_id, $temp_api_order_info); $temp_out_wares = json_decode($out_wares, true); if ($temp_out_wares['code'] != 1) { $msg = (isset($temp_out_wares['msg']) && $temp_out_wares['msg']) ? $temp_out_wares['msg'] : var_export($out_wares, true); throw new Exception($msg); } } //dd("批量更新成功".date('Y-m-d H:i:s'));
Okay, wenn Sie die Anzahl berechnen Datentabellen, dann müssen Sie diese Methode ändern. Versuchen Sie es selbst zu ändern. $this->read_temp_api_order_info(10);就
PHP-Tutorial!
Das obige ist der detaillierte Inhalt vonPHP-Generator Yield verarbeitet große Datenmengen im Geschäft (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!