欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php amqp 文檔

陳思宇1年前9瀏覽0評論

PHP AMQP文檔說明

PHP AMQP文檔說明

無論從數據傳輸或計算效率方面來說,本文將通過闡述php amqp,來看其如何更好地解決這些問題。

起步

channel();

此處我們可以看到,在我們使用php amqp前,我們首先需要安裝PhpAmqpLib。安裝之后,以代碼化方式即可登陸 message queue。

工作隊列

這里,我們將會舉一反三。 假設有一個后臺耗時任務,這個任務將會把文件中URL轉換成PDF,我們可以通過以下方式進行解決:

queue_declare('task_queue', false, true, false, false);
$msg = new AMQPMessage($url);
$channel->basic_publish($msg, '', 'task_queue');
echo " [x] Sent ", $url, "\n";

這里我們可以通過channel的基本參數,以basic_publish的方式進行文件的發布。同時,我們注意到“task_queue”是一個持久化的隊列,這樣一來,即使RabbitMQ服務器關閉或重啟,其仍然會保留受到的消息。

發布者/訂閱者

現在,假設我們需要通過訂閱的方式來獲取pdf文件。則可以通過以下代碼進行解決:

exchange_declare('pdfs', 'fanout', false, false, false);
list($queue_name, ,) = $channel->queue_declare('', false, false, true, false);
$channel->queue_bind($queue_name, 'pdfs');
echo ' [*] Waiting for logs. To exit press CTRL+C', "\n";
$callback = function ($msg) {
echo ' [x] ', $msg->body, "\n";
};
$channel->basic_consume($queue_name, '', false, true, false, false, $callback);
while (count($channel->callbacks)) {
$channel->wait();
}

這里通過通過queue_bind來講隊列和模式綁定起來。同時,配置訂閱者,以此迭代的方式,來開辟文件下載服務。當然,這里也僅僅是展示出關注于如何使用php amqp, 在實際中應用這些思維,還需要根據自己的實際需要去考慮使用。

總結

在此之上,我們可以看出,php amqp依賴于消息隊列的一種高效的機制,同時以消息的方式提高了系統的可用性(并發)。但同時,因為使用了消息隊列,一般會在保證處理單元之間獨立性的同時,增加了系統整體的耦合。在使用消息隊列之前,一定需要好好考慮其應用場合,才能充分發揮php amqp的作用。