Detaillierte Erklärung des Generators in 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>"; }
Wir können schnell einen integrierten PHP-Server in dem Verzeichnis starten, in dem die Datei generator.php erstellt wird:
php -S localhost:8000
Wenn Sie http://localhost:8000/generator.php öffnen Mit einem Browser sollten wir Ergebnisse wie diese sehen:
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>"; }
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.
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>"; }
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; } }
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>"; }
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 === 'stop') return; } }
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('stop'); } echo "Dataset {$range} <br>"; }
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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

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

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

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

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

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