php的amqp擴展安裝,php amqplib

本文目錄一覽:

php rabbitmq 哪個擴展最好

Linux 上面一般需要自己編譯

注意:擴展是C寫的,由於C與RabbitMQ通信一般需要依賴rabbitmq-c庫(也就是librabbitmq),所以編譯擴展前需要先裝依賴庫。不同版本的擴展,對php版本和librabbitmq兼容性不一樣。下面這個版本是經過本人測試的,可以兼容的。

rabbitmq-c -0.4.1 , amqp 擴展 1.4.0 , php 5.5.9

一鍵安裝腳本:

[cpp] view plain copy

#!/bin/bash

set -e

#install cmake

yum -y install cmake

#download rabbitmq-c

wget

php的amqp應該怎樣使用

高級消息隊列協議(AMQP)是一個非同步消息傳遞所使用的應用層協議規範。作為線路層協議,而不是API(例如JMS),AMQP 客戶端能夠無視消息的來源任意發送和接受信息。現在,已經有相當一部分不同平台的伺服器和客戶端可以投入使用。

1、相關概念說明

Broker:簡單來說就是消息隊列伺服器實體。

Exchange:消息交換機,它指定消息按什麼規則,路由到哪個隊列。

Queue:消息隊列載體,每個消息都會被投入到一個或多個隊列。

Binding:綁定,它的作用就是把exchange和queue按照路由規則綁定起來。

Routing Key:路由關鍵字,exchange根據這個關鍵字進行消息投遞。

vhost:虛擬主機,一個broker里可以開設多個vhost,用作不同用戶的許可權分離。

producer:消息生產者,就是投遞消息的程序。

consumer:消息消費者,就是接受消息的程序。

channel:消息通道,在客戶端的每個連接里,可建立多個channel,每個channel代表一個會話任務。

2、使用流程

即 Client – AMQP server – Client

左邊的Client向右邊的Client發送消息,流程:

1,  獲取Conection

2,  獲取Channel

3,  定義Exchange,Queue

4,  使用一個RoutingKey將Queue Binding到一個Exchange上

5,  通過指定一個Exchange和一個RoutingKey來將消息發送到對應的Queue上,

6,  接收方在接收時也是獲取connection,接著獲取channel,然後指定一個Queue直接到它關心的Queue上取消息,它對Exchange,RoutingKey及如何binding都不關心,到對應的Queue上去取消息就OK了

3、AMQP例子

生產方

?php

$conn_args = array(‘host’ =’localhost’, ‘port’ = 5672, ‘login’ = ‘guest’, ‘password’ = ‘guest’, ‘vhost’ = ‘/’);

$conn = new AMQPConnection($conn_args);

if ($conn-connect()) {

    echo “Established a connection to the broker \n”;

}else {

    echo “Cannot connect to the broker \n “;

}

$e_name=’ex_test5′;//交換機名橫

$q_name=’q_test5′;//隊列名稱

$r_key=’key_test1′;

//你的消息

$message = json_encode(array(‘Hello World!’));

//創建channel

$channel = new AMQPChannel($conn);

//創建exchange

$ex = new AMQPExchange($channel);

$ex-setName($e_name);//創建名字

$ex-setType(AMQP_EX_TYPE_DIRECT);

$ex-setFlags(AMQP_DURABLE | AMQP_AUTODELETE);

echo “exchange status:”.$ex-declare();

echo “\n”;

//創建隊列

$q = new AMQPQueue($channel);

//設置隊列名字 如果不存在則添加

$q-setName($q_name);

$q-setFlags(AMQP_DURABLE | AMQP_AUTODELETE);

echo “queue status: “.$q-declare();

echo “\n”;

echo ‘queue bind: ‘.$q-bind($e_name,$r_key);//將你的隊列綁定到routingKey

echo “\n”; 

$channel-startTransaction();

echo “send: “.$ex-publish($message, $r_key); //將你的消息通過制定routingKey發送

$channel-commitTransaction();

$conn-disconnect();

?

消費方

?php

$conn_args = array(‘host’ =’localhost’, ‘port’ = 5672, ‘login’ = ‘guest’, ‘password’ = ‘guest’, ‘vhost’ = ‘/’);

//$q_name=’q_test6′;//隊列名稱

$q_name=$_GET[‘q’];//隊列名稱

$conn = new AMQPConnection($conn_args); 

$conn-connect(); 

$channel = new AMQPChannel($conn); 

$q = new AMQPQueue($channel); 

$q-setName($q_name); 

$q-setFlags(AMQP_DURABLE | AMQP_AUTODELETE); 

while($a=$q-declare())

{

    echo “queue status: “.$a;

    echo “==========\n”;

    $messages = $q-get(AMQP_AUTOACK);

    print_r($messages-getBody()); 

    echo “\n”; 

}

$conn-disconnect();

?

PHP7 不支持amqp嗎

第三方擴展需要升級支持到PHP7才能正常安裝,PHP7內核與PHP5內核間有很大區別,擴展庫都需要進行適配才能正常編譯。建議你關注amqp開發者提供的一些信息和開發進度。

PHP7 是支持的

用這個源碼包試試

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/232179.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 12:49
下一篇 2024-12-11 12:49

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台伺服器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24
  • PHP導出Excel文件

    一、PHP導出Excel文件列寬調整 當我們使用PHP導出Excel文件時,有時需要調整單元格的列寬。可以使用PHPExcel類庫中的setWidth方法來設置單元格的列寬。下面是…

    編程 2025-04-24
  • php擴展庫初探

    一、什麼是php擴展庫? PHP擴展庫(PHP extension)是一些用C語言編寫的動態鏈接庫,用於擴展PHP的功能。PHP擴展庫使得PHP可以與各種資料庫系統相連、SMTP、…

    編程 2025-04-23

發表回復

登錄後才能評論