Position actuelle: Accueil> Derniers articles> Guide de mise en œuvre de la communication et de la file d'attente Asynchrones PHP: Combat SOAP et RabbitMQ réel

Guide de mise en œuvre de la communication et de la file d'attente Asynchrones PHP: Combat SOAP et RabbitMQ réel

M66 2025-10-07

introduction

Dans les applications Internet modernes, la communication asynchrone et les files d'attente de messages sont des moyens importants pour réaliser des systèmes efficaces. En tant que langage côté serveur largement utilisé, PHP fournit des bibliothèques et des extensions riches pour prendre en charge ces fonctions. Cet article expliquera en profondeur comment implémenter la communication asynchrone à l'aide de PHP et de savon, et comment implémenter les files d'attente de messages via RabbitMQ, et fournir des exemples de code complets.

Qu'est-ce que le savon

SOAP (Simple Object Access Protocol) est un protocole de messagerie basé sur XML utilisé pour communiquer entre les applications dans les systèmes distribués. Il prend en charge la transmission via HTTP, SMTP et d'autres protocoles, et est souvent utilisé dans les services Web pour réaliser des fonctions de communication asynchrones et de file d'attente de messages.

Utilisez PHP et SOAP pour implémenter une communication asynchrone

Installation et configuration des extensions de savon D'abord, vous devez installer et activer les extensions de savon dans l'environnement PHP. Activez l'extension SOAP dans le fichier php.ini pour terminer la configuration. Pour des étapes spécifiques, veuillez vous référer à la documentation officielle PHP.

Créer un serveur de savon

<?php
require_once('lib/nusoap.php');

$server = new soap_server();
$server-> configurewsdl (&#39;asyncserver&#39;, &#39;urn: asyncServer&#39;);

fonction my_async_function ($ paramètre)
{
    // Logique pour effectuer des opérations asynchrones // ...
    retourner le «succès»;
}

$ server-> registre (&#39;my_async_function&#39;,
    array (&#39;paramètre&#39; => &#39;xsd: string&#39;),
    array (&#39;return&#39; => &#39;xsd: string&#39;),
    &#39;urn: asyncserver&#39;,
    &#39;urn: asyncserver # my_async_function&#39;,
    &#39;rpc&#39;,
    «encodé»,
    &#39;Ma fonction asynchrone&#39;
));

$ server-> service (file_get_contents (&#39;php: // entrée&#39;));
?>

Créer un client SOAP

<?php
require_once('lib/nusoap.php');

$client = new nusoap_client('http://localhost/async_server.php?wsdl', 'wsdl');
$response = $client-> Appel (&#39;my_async_function&#39;, array (&#39;paramètre&#39; => &#39;hello&#39;));

print_r ($ réponse);
?>

Le code ci-dessus crée un client SOAP via NUSOAP_CLIENT et appelle la fonction asynchrone du serveur pour réaliser la communication asynchrone PHP.

Implémenter des files d'attente de messages à l'aide de PHP et de savon

La file d'attente de messages est un mécanisme de passage des messages entre les applications, qui est souvent utilisée pour implémenter le découplage système et le traitement asynchrone. Dans PHP, vous pouvez utiliser des bibliothèques tierces telles que RabbitMQ pour implémenter des files d'attente de messages.

Installer et configurer Rabbitmq

Installez et configurez RabbitMQ dans un environnement PHP, reportez-vous à la documentation officielle de RabbitMQ pour l'installation et la configuration.

Créer des producteurs et des consommateurs

<?php
require_once('vendor/autoload.php');

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;

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

$ queue = &#39;async_queue&#39;;
$ channel-> queue_declare ($ queue, false, true, false, false);

$ message = new AmqpMessage (&#39;Hello, message!&#39;);
$ canal-> Basic_publish ($ message, &#39;&#39;, $ file d&#39;attente);

$ canal-> close ();
$ connection-> close ();
?>
<?php
require_once('vendor/autoload.php');

use PhpAmqpLib\Connection\AMQPStreamConnection;

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

$ queue = &#39;async_queue&#39;;
$ channel-> queue_declare ($ queue, false, true, false, false);

$ channel-> basic_consume ($ file, &#39;&#39;, false, false, false, false, fonction ($ msg) {
    Echo "reçu:". $ msg-> corps. "\ n";
    $ msg-> ack ();
});

while ($ canal-> is_consuming ()) {
    $ canal-> wait ();
}

$ canal-> close ();
$ connection-> close ();
?>

Créez une connexion RabbitMQ via la bibliothèque PHPAMQPLIB et définissez une file d'attente. Le producteur envoie des messages via Basic_Publish, et le consommateur écoute et traite les messages dans la file d'attente via Basic_Consume.

en conclusion

La combinaison de PHP et de savon peut facilement réaliser une communication asynchrone, tandis que des outils de file d'attente de messages tels que RabbitMQ peuvent être utilisés pour gérer efficacement les tâches asynchrones. Cet article fournit un exemple de code complet pour aider les développeurs à implémenter rapidement le traitement asynchrone et les fonctions de file d'attente de messages dans des projets réels. Selon différents besoins du projet, d'autres bibliothèques tierces peuvent également être sélectionnées pour optimiser l'architecture et les performances du système.