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/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

发表回复

登录后才能评论