


So verwenden Sie RabbitMQ für die Aufgabenplanung und Warteschlangenverwaltung in PHP
So verwenden Sie RabbitMQ für die Aufgabenplanung und Warteschlangenverwaltung in PHP
1 Einführung
Bei der Entwicklung von Webanwendungen müssen wir häufig einige zeitaufwändige Aufgaben erledigen, wie z. B. das Versenden von E-Mails, das Erstellen von Berichten, die Verarbeitung großer Datenmengen usw . Wenn diese Aufgaben direkt in der Webanforderung ausgeführt werden, kann sich die Antwortzeit verlangsamen und das Benutzererlebnis beeinträchtigt werden. Um dieses Problem zu lösen, können wir Nachrichtenwarteschlangen für die Aufgabenplanung und Warteschlangenverwaltung verwenden. RabbitMQ ist ein leistungsstarkes Nachrichtenwarteschlangensystem, das eine umfangreiche API bereitstellt, die problemlos in PHP verwendet werden kann.
2. RabbitMQ installieren
Zuerst müssen wir RabbitMQ auf dem Server installieren. Sie können es gemäß dem auf der offiziellen Website bereitgestellten Installations-Tutorial installieren oder Docker direkt verwenden, um den RabbitMQ-Container auszuführen. Nach Abschluss der Installation können Sie den Status der Warteschlange anzeigen und die Warteschlange verwalten, indem Sie auf die RabbitMQ-Verwaltungsseite zugreifen.
3. Verwenden Sie zum Betrieb die PHP-amqplib-Bibliothek.
Für die Verwendung von RabbitMQ in PHP ist die Verwendung einer Drittanbieterbibliothek erforderlich, z. B. PHP-amqplib. Diese Bibliothek kann über Composer eingeführt werden. Der Befehl lautet wie folgt:
composer require php-amqplib/php-amqplib
Fügen Sie nach Abschluss der Installation die Bibliotheksdatei in den Code ein:
use PhpAmqpLibConnectionAMQPStreamConnection; use PhpAmqpLibMessageAMQPMessage;
IV. Bevor Sie RabbitMQ verwenden, müssen Sie eine Verbindung herstellen RabbitMQ-Server:
$host = 'localhost'; $port = 5672; $user = 'guest'; $pass = 'guest'; $connection = new AMQPStreamConnection($host, $port, $user, $pass); $channel = $connection->channel();Hier verwendet: Der Standard-RabbitMQ-Host, -Port, -Benutzername und -Passwort. Wenn benutzerdefinierte Anforderungen vorliegen, können diese Parameter entsprechend der tatsächlichen Situation geändert werden. 5. Nachrichten an die Warteschlange senden
Bei der Aufgabenplanung senden wir normalerweise Aufgaben an eine Nachrichtenwarteschlange, damit sie vom Hintergrundarbeiter verarbeitet werden können. Mit dem folgenden Code können Nachrichten an die Warteschlange gesendet werden:
$message = new AMQPMessage('hello world'); $channel->basic_publish($message, '', 'task_queue');Hier erstellen wir eine AMQPMessage-Instanz und legen den zu sendenden Nachrichtentext fest. Verwenden Sie dann die Methode basic_publish, um die Nachricht an eine Warteschlange namens task_queue zu senden. 6. Nachrichten in der Warteschlange konsumieren
Das Konsumieren von Nachrichten in der Warteschlange erfordert das Starten eines oder mehrerer Worker-Prozesse im Hintergrund zur Verarbeitung. Der Worker-Prozess ruft die Nachricht aus der Warteschlange ab und führt die entsprechenden Aufgaben aus. Sie können den folgenden Code verwenden, um Nachrichten in der Warteschlange zu konsumieren:
$callback = function ($message) { echo "Received: " . $message->body . " "; usleep(100000); echo "Done "; $message->ack(); }; $channel->basic_consume('task_queue', '', false, false, false, false, $callback); while (count($channel->callbacks)) { $channel->wait(); }Hier definieren wir eine anonyme Funktion $callback als Nachrichtenverarbeitungslogik. In dieser Funktion können wir eine bestimmte Aufgabenverarbeitung durchführen und dann die Methode $message->ack() aufrufen, um anzuzeigen, dass die Aufgabe abgeschlossen ist. Der Grund für den Aufruf der ack-Methode liegt darin, dass RabbitMQ standardmäßig nicht weiß, ob die Aufgabe erfolgreich ausgeführt wird. Daher müssen wir das Ausführungsergebnis der Aufgabe manuell bestätigen. 7. Nachrichtenpersistenz
Im obigen Beispiel ist die Nachrichtenpersistenz standardmäßig deaktiviert. Wenn der RabbitMQ-Server neu gestartet wird, geht die Nachricht verloren. Wenn wir möchten, dass die Nachricht nach dem Neustart des Servers automatisch wiederhergestellt wird, müssen wir eine Nachrichtenpersistenz durchführen. Es kann durch den folgenden Code festgelegt werden:
$channel->queue_declare('task_queue', false, true, false, false);Setzen Sie den dritten Parameter auf true, was bedeutet, dass die Warteschlange als dauerhafte Warteschlange festgelegt ist. 8. Verzögerte Aufgaben
Manchmal müssen wir auch verzögerte Aufgaben implementieren und Aufgaben nach einer bestimmten Zeit ausführen. RabbitMQ selbst unterstützt die Funktion zum Verzögern von Aufgaben nicht, sie kann jedoch durch Hinzufügen zusätzlicher Plug-Ins erreicht werden. Ein häufig verwendetes Plug-In ist Rabbitmq_delayed_message_exchange, das auf folgende Weise installiert werden kann:
rabbitmq-plugins enable rabbitmq_delayed_message_exchangeNach der Installation legen Sie beim Senden einer Nachricht die Eigenschaften von AMQPMessage wie folgt fest:
$message->set('application_headers', ['x-delay' => 3000]);Der obige Code wird mit einer Verzögerung von ausgeführt 3 Sekunden nach dem Senden der Nachricht. 9. Zusammenfassung
Durch die Einführung dieses Artikels haben wir gelernt, wie man RabbitMQ für die Aufgabenplanung und Warteschlangenverwaltung in PHP verwendet. Nachdem wir die oben genannten Schritte geübt haben, können wir RabbitMQ problemlos verwenden, um zeitaufwändige Aufgaben zu erledigen und die Leistung und Zuverlässigkeit der Anwendung zu verbessern. Gleichzeitig werden Nachrichtenpersistenz und verzögerte Aufgabenverarbeitungsmethoden eingeführt, sodass wir unterschiedliche Anforderungen besser erfüllen können. Ich hoffe, dieser Artikel hilft Ihnen bei der Verwendung von RabbitMQ in tatsächlichen Projekten.
- Offizielle RabbitMQ-Website: https://www.rabbitmq.com/
- Offizielle PHP-amqplib-Dokumentation: https://github.com/php-amqplib/php-amqplib
Das obige ist der detaillierte Inhalt vonSo verwenden Sie RabbitMQ für die Aufgabenplanung und Warteschlangenverwaltung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

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

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

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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

Der Schlüssel zum Einrichten von PHP besteht darin, die Installationsmethode zu klären, PHP.ini zu konfigurieren, eine Verbindung zum Webserver herzustellen und die erforderlichen Erweiterungen zu aktivieren. 1. Installieren Sie PHP: Verwenden Sie APT für Linux, Homebrew für Mac und XAMPP für Windows. 2. Konfigurieren Sie Php.ini: Fehlerberichte anpassen, Einschränkungen hochladen und den Server neu starten. 3. Verwenden Sie Webserver: Apache verwendet mod_php, nginx verwendet PHP-FPM. V.

Es gibt drei gängige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codeblöcke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden können, aber gekreuzt werden können. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikblöcke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schließung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Klärung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erklären, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilität der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine Übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen können die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

Kommentare können nicht nachlässig sein, da sie die Gründe für die Existenz des Codes und nicht die Funktionen erklären möchten, z. B. die Kompatibilität mit alten Schnittstellen oder Einschränkungen von Drittanbietern, sonst können Personen, die den Code lesen, nur auf Vermutungen angewiesen. Die Bereiche, die kommentiert werden müssen, umfassen komplexe bedingte Urteile, spezielle Fehlerbehandlungslogik und vorübergehende Bypass -Beschränkungen. Eine praktischere Möglichkeit, Kommentare zu schreiben, besteht darin, Einzelzeilen-Kommentare auszuwählen oder Kommentare basierend auf der Szene zu blockieren. Verwenden Sie Dokumentblock Kommentare, um Parameter zu erläutern und Werte zu Beginn von Funktionen, Klassen und Dateien zurückzugeben, und halten Sie die Kommentare aktualisiert. Für eine komplexe Logik können Sie dem vorherigen eine Zeile hinzufügen, um die Gesamtabsicht zusammenzufassen. Verwenden Sie gleichzeitig keine Kommentare zum Versiegelungscode, sondern verwenden Sie Versionsteuerungswerkzeuge.

Der Schlüssel zum Schreiben guter Kommentare besteht darin, "warum" zu erklären, anstatt nur "was getan wurde", um die Lesbarkeit des Codes zu verbessern. 1. Kommentare sollten logische Gründe erklären, wie z. B. Überlegungen für die Wertauswahl oder -verarbeitung; 2. Verwenden Sie Absatzanmerkungen für eine komplexe Logik, um die Gesamtidee von Funktionen oder Algorithmen zusammenzufassen. Fegen regelmäßig Kommentare beibehalten, um die Konsistenz mit dem Code zu gewährleisten, irreführend und gegebenenfalls veraltete Inhalte zu löschen. V.

Tolearnphpeffectival, startbysettingupalocalerverenVironmentusexs -LikexamppandacodeeditorikevScode.1) InstallxamppForapache, MySQL und Php.SeacodeeditorForsyntaxSupport.3) testyourscludingveliktingveliktelaThbiliodble.Neclyble.NektFile

Toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1.onwindows, download undInstallxampp, SelectComponents, Startapache und PlaceFilesinhtdocscs.2.Anternativ, manuellinstallphpfrfr

PhpblockComentsuEsfulforwritingMulti-linexplanationen, vorübergehend absorbierendeCode und GeneratingDocumentation
