Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erklärung des Generators in PHP

Detaillierte Erklärung des Generators in PHP

May 11, 2020 am 10:35 AM
php 生成器

Beim Autofahren ist Geschwindigkeit nicht alles. Aber im Internet macht die Geschwindigkeit den entscheidenden Unterschied. Je schneller Ihre Anwendung ist, desto besser ist das Benutzererlebnis. In diesem Artikel geht es um PHP-Generatoren. Warum sprechen wir also über Geschwindigkeit? Sie werden schnell feststellen, dass Generatoren eine große Rolle bei der Geschwindigkeits- und Speicherverwaltung spielen.

Was ist PHP Generator?

Generatoren wurden in PHP 5.5 hinzugefügt und bieten eine einfache Möglichkeit, Daten zu iterieren, ohne Arrays im Speicher zu erstellen. Sind Sie etwas verwirrt? Geben Sie dann ein Beispiel, um zu zeigen, dass die Verwendung von Generatoren eine gute Möglichkeit ist.

Erstellen Sie zunächst eine Datei „generator.php“, die in unserem Beispiel verwendet wird. Nachdem wir die Datei erstellt haben, fügen wir einen Code hinzu.

<?php
function getRange ($max = 10) {
    $array = [];
    for ($i = 1; $i < $max; $i++) {
        $array[] = $i;
    }
    return $array;
}
foreach (getRange(15) as $range) {
    echo "Dataset {$range} <br>";
}
Nach dem Login kopieren

Wir können schnell einen integrierten PHP-Server in dem Verzeichnis starten, in dem die Datei generator.php erstellt wird:

php -S localhost:8000
Nach dem Login kopieren

Wenn Sie http://localhost:8000/generator.php öffnen Mit einem Browser sollten wir Ergebnisse wie diese sehen:

Detaillierte Erklärung des Generators in PHP

Dieser Code ist nicht sehr selbsterklärend. Ändern wir den Code ein wenig

<?php
foreach (getRange(PHP_INT_MAX) as $range) {
    echo "Dataset {$range} <br>";
}
Nach dem Login kopieren

Der maximale Wert, den der obige Code generieren kann, ist nun PHP_INT_MAX (d. h. der maximale Wert, den PHP nach dieser Änderung generieren kann). Beachten Sie, dass dieses Mal etwas anders ist. Dieses Generatorskript gibt eine Warnmeldung aus.

Detaillierte Erklärung des Generators in PHP

Es ist eine Schande, dass PHP nicht mehr über genügend Speicher verfügt. Zu den Lösungen, die Sie sich vorstellen können, gehört möglicherweise die Erhöhung der Obergrenze von „memory_limit“ in der Datei „php.ini“. Aber fairerweise muss man sagen, dass dieses Skript sowohl ineffizient ist als auch Speicher beansprucht. Was wir brauchen, ist ein Skript, das effizient ist und wenig Speicher beansprucht.

Generatoren verwenden

Definieren wir die gleiche Funktion oben, rufen sie mit dem gleichen Wert von PHP_INT_MAX auf und führen sie erneut aus. Aber dieses Mal erstellen wir eine Generatorfunktion.

<?php
function getRange ($max = 10) {
    for ($i = 1; $i < $max; $i++) {
        yield $i;
    }
}
foreach (getRange(PHP_INT_MAX) as $range) {
    echo "Dataset {$range} <br>";
}
Nach dem Login kopieren

Beim Parsen der getRange-Funktion durchlaufen wir dieses Mal einfach die Werte und liefern die Ausgabe. yield ähnelt return value darin, dass es auch einen Wert von einer Funktion zurückgibt, der einzige Unterschied besteht jedoch darin, dass yield nur bei Bedarf einen Wert zurückgibt und nicht versucht, den gesamten Datensatz im Speicher zu behalten.

Wenn Sie Ihren Browser aufrufen, sollten die auf der Seite angezeigten Daten angezeigt werden. Bei entsprechender Zeit zeigt der Browser schließlich die Daten an.

Hinweis: Generatoren können nur innerhalb von Funktionen verwendet werden.

Warum Generatoren verwenden

Manchmal kann es vorkommen, dass wir einen großen Datensatz (vielleicht eine Protokolldatei) analysieren möchten. Das ist auch der Fall Es ist möglich, Berechnungen auf der Ergebnismenge einer großen Datenbank usw. durchzuführen. Wir möchten nicht, dass alle diese Daten in den Speicher geladen werden. Wir sollten den entsprechenden Speicherstatus so weit wie möglich speichern. Die Daten müssen nicht groß sein – der Generator ist effizient, egal wie klein die Daten sind. Vergessen Sie nicht: Unser Ziel ist es, weniger Speicher zu verbrauchen, um Daten so schnell wie möglich zu verarbeiten.

Schlüssel-Wert-Paare zurückgeben

Manchmal sind unsere Daten überzeugender, wenn sie auf Schlüsselwerten basieren. Wenn wir einen Generator verwenden, können wir Schlüssel-Wert-Paare wie die folgenden generieren.

<?php
function getRange ($max = 10) {
    for ($i = 1; $i < $max; $i++) {
        $value = $i * mt_rand();
        yield $i => $value;
    }
}
Nach dem Login kopieren

Wir können dieses Schlüssel-Wert-Paar dann wie jedes Array verwenden.

<?php
foreach (getRange(PHP_INT_MAX) as $range => $value) {
    echo "Dataset {$range} has {$value} value<br>";
}
Nach dem Login kopieren

Parameter an den Generator übergeben

Der Generator kann auch Parameter empfangen. Das bedeutet, dass der Generator es uns ermöglicht, Parameter als Befehl oder andere Funktionen einzufügen. Beispielsweise senden wir einen Wert an den Generator, um dessen Ausführung zu stoppen oder seine Ausgabe zu ändern. Mit der oben genannten getRange-Funktion können wir dies erreichen.

<?php
function getRange ($max = 10) {
    for ($i = 1; $i < $max; $i++) {
        $injected = yield $i;
        if ($injected === &#39;stop&#39;) return;
    }
}
Nach dem Login kopieren

Um diesen Wert zu injizieren, können wir Folgendes tun.

<?php
$generator = getRange(PHP_INT_MAX);
foreach ($generator as $range) {
    if ($range === 10000) {
        $generator->send(&#39;stop&#39;);
    }
    echo "Dataset {$range} <br>";
}
Nach dem Login kopieren

Hinweis: Die Verwendung von Return in einem Generator führt zu einem Sprung aus dem Generator.

Generatoren nicht missbrauchen

Obwohl die Verwendung von PHP_INT_MAX etwas übertrieben ist. Aber für mich ist PHP_INT_MAX 2147483647, was bedeutet:

zwei Milliarden viertausendvierhundertvierundsiebzigtausenddreiundachtzigtausendsechshundertsiebenundvierzig

Der Generator macht die Speichernutzung effizienter . Bei Missbrauch kann es jedoch auch zu Gedächtnisproblemen kommen.

Zusammenfassung

Generatoren bieten erhebliche Leistungsverbesserungen, die kaum zu ignorieren sind. In den meisten Fällen benötigen wir keinen Server mit hoher Konfiguration, um den Code auszuführen. Wir müssen nur ein wenig umgestalten, Generatoren sind sehr nützlich und wir sollten sie häufiger nutzen.

Empfohlene Tutorials: „Laravel-Tutorial“ „PHP-Tutorial“ „PHP7

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Generators in PHP. 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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
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)

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.

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

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 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.

CakePHP-Protokollierung CakePHP-Protokollierung Sep 10, 2024 pm 05:26 PM

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

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-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.

See all articles