Heim  >  Artikel  >  Backend-Entwicklung  >  Umgang mit WebSocket- und AMQP-Nachrichtenwarteschlangen in der PHP-Backend-API-Entwicklung

Umgang mit WebSocket- und AMQP-Nachrichtenwarteschlangen in der PHP-Backend-API-Entwicklung

WBOY
WBOYOriginal
2023-06-17 16:55:361156Durchsuche

Mit der Popularität des Internets und mobiler Geräte sind moderne Webanwendungen nicht mehr nur statische Seiten, auf denen Inhalte angezeigt werden, sondern komplexere und interaktive dynamische Anwendungen. Diese Änderung erfordert, dass auch die technische Implementierung der Back-End-API aktualisiert werden muss, um den Benutzeranforderungen gerecht zu werden und schnell reagieren zu können. Unter anderem ist die Verarbeitung von WebSocket- und AMQP-Nachrichtenwarteschlangen zu zwei sehr wichtigen und gängigen technischen Mitteln in der Back-End-API-Entwicklung geworden.

WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das dabei helfen kann, Kommunikation und Push in Echtzeit zu erreichen, wodurch Webanwendungen eine effizientere Dateninteraktion und ein besseres Benutzererlebnis erreichen können. Im Gegensatz zum herkömmlichen HTTP-Request-Response-Modell ermöglicht WebSocket das kontinuierliche Senden und Empfangen von Nachrichten über eine offene Verbindung. Dieser lange Verbindungsmechanismus sorgt für eine stabile Kommunikation mit dem Server und vermeidet gleichzeitig häufige Verbindungs- und Verbindungsabbrüche.

In der Back-End-API, die WebSocket verarbeitet, müssen wir normalerweise die folgenden Schritte implementieren:

  1. Stellen Sie eine WebSocket-Verbindung her und legen Sie zugehörige Parameter fest, z. B. die Dauer der Verbindung und das Nachrichtenformat.
  2. Überwachen Sie WebSocket-Nachrichtenereignisse und warten Sie, bis der Client Nachrichten sendet.
  3. Reagieren Sie auf Kundennachrichten und führen Sie Geschäftsabwicklungen durch.
  4. Push-Nachrichten an Kunden nach Bedarf.

Für die Implementierung von WebSocket können wir die WebSocket-Bibliothek von PHP wie Ratchet und PHP-Websockets verwenden. Diese Bibliotheken bieten praktische und benutzerfreundliche APIs und Ereignisse, die uns beim schnellen Aufbau von WebSocket-Servern unterstützen und gleichzeitig den Datenaustausch und die Kommunikation zwischen Anwendungen unterstützen. Wir müssen lediglich PHP-Skripte schreiben, um die Interaktion mit dem Client abzuschließen. Informationen zur spezifischen Implementierung finden Sie im folgenden Beispielcode:

require 'vendor/autoload.php';

use RatchetMessageComponentInterface;
use RatchetConnectionInterface;

class WebSocketServer implements MessageComponentInterface
{
    protected $clients;

    public function __construct()
    {
        $this->clients = new SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn)
    {
        $this->clients->attach($conn);
        echo "New client connected {$conn->resourceId}
";
    }

    public function onMessage(ConnectionInterface $from, $msg)
    {
        foreach ($this->clients as $client) {
            if ($from === $client) {
                continue;
            }
            $client->send($msg);
        }
    }

    public function onClose(ConnectionInterface $conn)
    {
        $this->clients->detach($conn);
        echo "Client {$conn->resourceId} disconnected
";
    }

    public function onError(ConnectionInterface $conn, Exception $e)
    {
        echo "WebSocket Error: {$e->getMessage()}
";
        $conn->close();
    }
}

$loop = ReactEventLoopFactory::create();
$webSocketServer = new RatchetServerIoServer(
    new RatchetHttpHttpServer(
        new RatchetWebSocketWsServer(
            new WebSocketServer()
        )
    ),
    $loop
);

echo "WebSocket server started
";
$webSocketServer->run();

Neben WebSocket ist auch die AMQP-Nachrichtenwarteschlange (Advanced Message Queuing Protocol) ein wichtiger Bestandteil der PHP-Back-End-API. Die Nachrichtenwarteschlange ist ein asynchrones Nachrichtenmuster, mit dem verschiedene Arten von Diensten entkoppelt und gleichzeitig verarbeitet werden können. In Webanwendungen können Nachrichtenwarteschlangen verwendet werden, um hohe Arbeitslasten wie eine große Anzahl interaktiver Vorgänge, Aufgaben mit hoher Auslastung und Datenverarbeitung zu bewältigen. Auf asynchrone Weise können Nachrichtenwarteschlangen die Leistung und Antwortgeschwindigkeit von Webanwendungen optimieren und lange Wartezeiten und Blockierungen vermeiden.

In der Back-End-API, die AMQP-Nachrichtenwarteschlangen verarbeitet, müssen wir normalerweise die folgenden Schritte ausführen:

  1. Erstellen Sie eine AMQP-Verbindung und legen Sie Verbindungsparameter wie Adresse, Konto und Passwort fest.
  2. Deklarieren Sie eine AMQP-Warteschlange oder einen AMQP-Austausch.
  3. Veröffentlichen oder konsumieren Sie AMQP-Nachrichten.
  4. Verarbeiten Sie Nachrichten und führen Sie nachfolgende Vorgänge aus, z. B. das Generieren neuer Nachrichten oder das Aktualisieren von Daten.

Zu den gängigen AMQP-Implementierungen in PHP gehören Bibliotheken wie php-amqplib und pecl-amqp. Mithilfe dieser Bibliotheken können wir AMQP-Nachrichtenwarteschlangen problemlos in PHP verwenden und Nachrichten schnell veröffentlichen und konsumieren. Das Folgende ist ein AMQP-Beispielcode, der mit php-amqplib implementiert wurde:

require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLibConnectionAMQPStreamConnection;
use PhpAmqpLibMessageAMQPMessage;

$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();

$channel->queue_declare('hello', false, false, false, false);

$callback = function ($msg) {
    echo 'Received: ', $msg->body, PHP_EOL;
};

$channel->basic_consume('hello', '', false, true, false, false, $callback);

echo "Waiting for messages. To exit press CTRL+C
";
while (count($channel->callbacks)) {
    $channel->wait();
}

Mit dem obigen Beispielcode können wir WebSocket- und AMQP-Nachrichtenwarteschlangen einfach verarbeiten und die Leistung und Antwortgeschwindigkeit von Webanwendungen verbessern.

Das obige ist der detaillierte Inhalt vonUmgang mit WebSocket- und AMQP-Nachrichtenwarteschlangen in der PHP-Backend-API-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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