色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php amqp 文檔

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

PHP AMQP文檔說明

PHP AMQP文檔說明

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

起步

channel();

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

工作隊(duì)列

這里,我們將會舉一反三。 假設(shè)有一個(gè)后臺耗時(shí)任務(wù),這個(gè)任務(wù)將會把文件中URL轉(zhuǎn)換成PDF,我們可以通過以下方式進(jìn)行解決:

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

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

發(fā)布者/訂閱者

現(xiàn)在,假設(shè)我們需要通過訂閱的方式來獲取pdf文件。則可以通過以下代碼進(jìn)行解決:

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來講隊(duì)列和模式綁定起來。同時(shí),配置訂閱者,以此迭代的方式,來開辟文件下載服務(wù)。當(dāng)然,這里也僅僅是展示出關(guān)注于如何使用php amqp, 在實(shí)際中應(yīng)用這些思維,還需要根據(jù)自己的實(shí)際需要去考慮使用。

總結(jié)

在此之上,我們可以看出,php amqp依賴于消息隊(duì)列的一種高效的機(jī)制,同時(shí)以消息的方式提高了系統(tǒng)的可用性(并發(fā))。但同時(shí),因?yàn)槭褂昧讼㈥?duì)列,一般會在保證處理單元之間獨(dú)立性的同時(shí),增加了系統(tǒng)整體的耦合。在使用消息隊(duì)列之前,一定需要好好考慮其應(yīng)用場合,才能充分發(fā)揮php amqp的作用。