Рубрики
Uncategorized

PHP использует ActiveMQ для отправки и обработки сообщений

Автор оригинала: David Wong.

В этой статье описан пример PHP, использующего ActiveMQ для отправки и обработки сообщений. Подробности заключаются в следующем:

Давайте возьмем в качестве примера простую регистрацию пользователя. Когда пользователь нажимает кнопку регистрации, мы отправляем сообщение, которое принимается PHP в фоновом режиме, а затем обрабатывается.

1. PHP-код выглядит следующим образом:

php
$stomp = new Stomp('tcp://192.168.1.222:61613');

$obj = new Stdclass();
//The following data is actually sent by the user through the front-end page post. Here is just a demonstration
$obj->username = 'test';
$obj->password = '123456';
//Send a registration message to the queue. Here we simulate user registration
$stomp->send('/queue/userReg', json_encode($obj));

2. PHP-код выглядит следующим образом:

subscribe('/queue/userReg');

while(true) {
 //Judge whether there is information read
 if($stomp->hasFrame()) {
  $frame = $stomp->readFrame();

  $data = json_decode($frame->body, true);
  var_dump($data);

  //We get data from
  //Process the corresponding logic, such as storing in the database, sending verification code and a series of operations.
  //$db->query("insert into user values('{$username}','{$password}')");
  //sendVerify();

  //Indicates that the message has been processed. The ack() function is very important
  $stomp->ack($frame);
 }
 sleep(1);
}

Запустите два вышеуказанных файла сценария соответственно

> /data/php56/bin/php 1.php
> /data/php56/bin/php 2.php

Мы также можем разделить вышеперечисленные 2. PHP-код разделен на несколько этапов.

2. PHP-код выглядит следующим образом:

subscribe('/queue/userReg');

while(true) {
 //Judge whether there is information read
 if($stomp->hasFrame()) {
  $frame = $stomp->readFrame();

  $data = json_decode($frame->body, true);

  //Registration information storage
  //$ret = db->query("insert into user values('{$data['username']}', '{$data['password']}')");
  //The demo here is set to true
  $ret = true;
  if($ret) {
   Echo $data ['user name '],'store successfully', PHP_ EOL;
   //If the storage is successful, the data will be sent to another message queue for further processing
   $stomp->send('/queue/sendVerify', $frame->body);

   $stomp->ack($frame);
  }
 }
 sleep(1);
}

3. PHP-код выглядит следующим образом:

subscribe('/queue/sendVerify');

while(true) {
 //Judge whether there is information read
 if($stomp->hasFrame()) {
  $frame = $stomp->readFrame();

  $data = json_decode($frame->body, true);

  //$RET = sendverify() sends the verification code. In fact, it should request an interface
  $ret = true;
  if($ret) {
   Echo $data ['username '],'Send verification code successfully', PHP_ EOL;

   $stomp->ack($frame);
  }
 }
 sleep(1);
}

Снова запустите три вышеперечисленных сценария

> /data/php56/bin/php 1.php
> /data/php56/bin/php 2.php
> /data/php56/bin/php 3.php

Для получения дополнительной информации о PHP читатели, интересующиеся им, могут ознакомиться со следующими темами: Учебник по разработке расширений PHP, краткое изложение навыков сетевого программирования PHP, краткое изложение использования PHP curl, энциклопедия навыков работы с массивами PHP, учебник по структуре и алгоритмам PHP, краткое изложение алгоритмов программирования PHP и Краткое описание использования строк PHP

Я надеюсь, что эта статья будет полезна для программирования на PHP.

Оригинал: “https://developpaper.com/php-uses-activemq-to-send-and-process-messages/”