현재 위치: > 최신 기사 목록> PHP 비동기 통신 및 메시지 대기열 구현 안내서 : 비누 및 토끼 실제 전투

PHP 비동기 통신 및 메시지 대기열 구현 안내서 : 비누 및 토끼 실제 전투

M66 2025-10-07

소개

최신 인터넷 응용 프로그램에서 비동기 통신 및 메시지 대기열은 효율적인 시스템을 실현하는 데 중요한 수단입니다. PHP는 널리 사용되는 서버 측 언어로서 이러한 기능을 지원하기 위해 풍부한 라이브러리와 확장을 제공합니다. 이 기사는 PHP 및 SOAP를 사용하여 비동기 통신을 구현하는 방법과 RabbitMQ를 통해 메시지 대기열을 구현하는 방법을 자세히 설명하고 완전한 코드 예제를 제공합니다.

비누는 무엇입니까?

SOAP (Simple Object Access Protocol)는 분산 시스템의 응용 프로그램간에 통신하는 데 사용되는 XML 기반 메시징 프로토콜입니다. HTTP, SMTP 및 기타 프로토콜을 통한 전송을 지원하며 종종 웹 서비스에서 비동기 통신 및 메시지 대기열 기능을 실현하는 데 사용됩니다.

PHP와 SOAP를 사용하여 비동기 통신을 구현하십시오

SOAP 확장을 먼저 설치 및 구성 PHP 환경에 SOAP 확장을 설치하고 활성화해야합니다. php.ini 파일에서 SOAP 확장을 활성화하여 구성을 완료하십시오. 특정 단계는 공식 PHP 문서를 참조하십시오.

비누 서버를 만듭니다

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

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

함수 my_async_function ($ parameter)
{{
    // 비동기 작업 수행을위한 논리 // ...
    반환 &#39;성공&#39;;
}

$ server-> register ( &#39;my_async_function&#39;,
    배열 ( &#39;매개 변수&#39;=> &#39;xsd : string&#39;),
    배열 ( &#39;return&#39;=> &#39;xsd : string&#39;),
    &#39;항아리 : 비동기 서버&#39;,
    &#39;항아리 : Asyncserver#my_async_function&#39;,
    &#39;rpc&#39;,
    &#39;인코딩&#39;,
    &#39;내 비동기 기능&#39;
);

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

비누 클라이언트를 만듭니다

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

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

print_r ($ 응답);
?>

위의 코드는 NUSOAP_CLIENT를 통해 SOAP 클라이언트를 생성하고 서버의 비동기 기능을 호출하여 PHP 비동기 통신을 실현합니다.

PHP와 SOAP를 사용하여 메시지 대기열을 구현하십시오

메시지 큐는 응용 프로그램 간 메시지를 전달하는 메커니즘이며, 종종 시스템 디커플링 및 비동기 처리를 구현하는 데 사용됩니다. PHP에서는 RabbitMQ와 같은 타사 라이브러리를 사용하여 메시지 대기열을 구현할 수 있습니다.

RabbitMQ를 설치하고 구성하십시오

PHP 환경에서 RabbitMQ 설치 및 구성 설치 및 구성을위한 공식 RabbitMQ 문서를 참조하십시오.

생산자와 소비자를 만듭니다

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

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

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

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

$ message = new amqpmessage ( &#39;hello, message!&#39;);
$ 채널-> basic_publish ($ message, &#39;&#39;, $ queue);

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

use PhpAmqpLib\Connection\AMQPStreamConnection;

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

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

$ channel-> basic_consume ($ queue, &#39;&#39;, false, false, false, false, function ($ msg) {
    에코 "수령 :". $ msg-> 바디. "\N";
    $ msg-> ack ();
});

while ($ channel-> is_conssoring ()) {
    $ 채널-> 대기 ();
}

$ 채널-> close ();
$ connection-> close ();
?>

phpamqplib 라이브러리를 통해 RabbitMQ 연결을 만들고 큐를 정의하십시오. 생산자는 Basic_publish를 통해 메시지를 보내고 소비자는 Basic_Consume을 통해 대기열에서 메시지를 듣고 처리합니다.

결론적으로

PHP와 SOAP를 결합하면 비동기 통신을 쉽게 달성 할 수 있으며 RabbitMQ와 같은 메시지 큐 도구를 사용하여 비동기 작업을 효율적으로 관리 할 수 ​​있습니다. 이 기사는 개발자가 실제 프로젝트에서 비동기 처리 및 메시지 대기 기능을 신속하게 구현할 수 있도록 완전한 샘플 코드를 제공합니다. 다양한 프로젝트 요구에 따라 시스템 아키텍처 및 성능을 최적화하기 위해 다른 타사 라이브러리를 선택할 수도 있습니다.