Heim Backend-Entwicklung PHP-Tutorial PHP-Generator Yield verarbeitet große Datenmengen im Geschäft (Codebeispiel)

PHP-Generator Yield verarbeitet große Datenmengen im Geschäft (Codebeispiel)

Jan 25, 2020 pm 01:54 PM
php yield

PHP-Generator Yield verarbeitet große Datenmengen im Geschäft (Codebeispiel)

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 verbrauchen

relativ 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 hervorzuheben

Ertragsleistung

Der Generator wird einen sehr großen Einfluss auf die Leistung von PHP haben Anwendungen

PHP-Code spart beim Ausführen viel Speicher

Es eignet sich besser zum Berechnen großer Datenmengen

ErtragsbetriebVerwenden

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

PHP-Generator Yield verarbeitet große Datenmengen im Geschäft (Codebeispiel)

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'));
Nach dem Login kopieren

können Sie sehen, dass wir $order_info = $this->read_temp_api_order_info(10); aufrufen. Dieses Objekt kann mit foreach iteriert werden für eine Generatorinstanz. Berechnen Sie den nächsten Wert, über den iteriert werden soll.

Die Eleganz von Generatoren besteht darin, dass der interne Zustand des Generators jedes Mal angehalten wird, wenn der nächste Wert vom Generator angefordert wird, und der interne Zustand wiederhergestellt wird. Der interne Status des Generators wechselt zwischen Anhalten und Fortsetzen, bis das Ende der Funktionsdefinition erreicht ist oder eine leere Return-Anweisung gefunden wird.

Der Effekt ist wie folgt:

PHP-Generator Yield verarbeitet große Datenmengen im Geschäft (Codebeispiel)

Testen Sie hier eine große Datenmenge und ändern Sie sie direkt

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-Generator Yield verarbeitet große Datenmengen im Geschäft (Codebeispiel)

Hier erkläre ich Ihnen hauptsächlich, wie Sie Yield verwenden, wenn Sie sehen möchten, wie lange das Einfügen dauert In der Datentabelle können Sie der Datentabelle ein Einfügezeitfeld hinzufügen und dann den Vergleich zwischen der ersten Dateneinfügung und der letzten Dateneinfügung anzeigen.

Weitere PHP-Kenntnisse finden Sie im

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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles