这是您可以使用enqueue库轻松完成的事情。首先,您可以从多种传输方式中进行选择,例如 AMQP、STOMP、Redis、Amazon SQS、Filesystem 等。
其次,它超级好用。让我们从安装开始:
您必须安装enqueue/simple-client
库和传输之一。假设您选择文件系统之一,请安装enqueue/fs
库。总结一下:
composer require enqueue/simple-client enqueue/fs
现在让我们看看如何从 POST 脚本发送消息:
<?php
// producer.php
use Enqueue\SimpleClient\SimpleClient;
include __DIR__.'/vendor/autoload.php';
$client = new SimpleClient('file://'); // the queue will store messages in tmp folder
$client->sendEvent('a_topic', 'aMessageData');
消费脚本:
<?php
// consumer.php
use Enqueue\SimpleClient\SimpleClient;
use Enqueue\Psr\PsrProcessor;
use Enqueue\Psr\PsrMessage;
include __DIR__.'/vendor/autoload.php';
$client = new SimpleClient('file://');
$client->bind('a_topic', 'a_processor_name', function(PsrMessage $psrMessage) {
// processing logic here
return PsrProcessor::ACK;
});
// this call is optional but it worth to mention it.
// it configures a broker, for example it can create queues and excanges on RabbitMQ side.
$client->setupBroker();
$client->consume();
consumer.php
使用supervisord或其他进程管理器运行与您一样多的进程,在本地计算机上您无需任何额外的库或包即可运行它。
这是一个基本示例,并且 enqueue 有许多其他功能可能会派上用场。如果您有兴趣,请查看入队文档。