好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php安装amqp php安装扩展的几种方法

很多站长朋友们都不太清楚php安装amqp,今天小编就来给大家整理php安装amqp,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php rabbitmq 哪个扩展最好 2、 php的amqp应该怎样使用 3、 rabb.it有哪些用户值得关注 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应该怎样使用

$a = (1>0) ? "zhen" : 'jia'; // 三目运算符 与下边if 语句 意思一样if( 1 > 0 ){$a = "zhen";}else{$a = "jia";}

rabb.it有哪些用户值得关注

关于RabbitMQ的文章网上转来转去最多的是一篇<<[RabbitMQ+Python入门经典] 兔子和兔子窝>>(随便给个链接了).这篇文章的讲解是很风趣,很适合用来理解一些基础概念.理解了概念以后就要进行一些实际性的实验了.原文给的python的例子.不是笔者想要的,笔者要用php的.

关于php和rabbitmq网上又有一篇被转来转去的文章<<安装 php-rabbit: RabbitMQ 的 PHP 扩展>>.文章里提到的php-rabbit,笔者死活是访问不了:

让几个不同地方的哥们帮着访问下载,都下载不了,推断可能是这个项目被删除了.问一个哥们儿,说他们那用的是php-amqp.从官方下的库竟然不好使.于是死皮懒脸的管哥们要了他们正在用的版本和示例,又鉴于网上 php-amqp版本的rabbit操作细节甚少(可以说没有么?),于是有了今天这份儿总结.

测试平台:

Distributor ID: Ubuntu

Description: Ubuntu 9.10

Release: 9.10

Codename: karmic

既然是ubuntu,安装rabbitmq服务端是很easy的事情,一条命令搞定:

apt-get install rabbitmq-server

接下来的就是折腾了将近两天的心得体会了.

1.必需掌握的指令

添加用户:

rabbitmqctl add_user rainbird password

添加权限:

rabbitmqctl set_permissions -p "/" rainbird ".*" ".*" ".*"

删除测试用户:

rabbitmqctl delete_user guest

所有指令列表(很简单的英文):

add_user <UserName> <Password>

delete_user <UserName>

change_password <UserName> <NewPassword>

list_users

add_vhost <VHostPath>

delete_vhost <VHostPath>

list_vhosts

set_permissions [-p <VHostPath>] <UserName> <Regexp> <Regexp> <Regexp>

clear_permissions [-p <VHostPath>] <UserName>

list_permissions [-p <VHostPath>]

list_user_permissions <UserName>

list_queues [-p <VHostPath>] [<QueueInfoItem> ...]

list_exchanges [-p <VHostPath>] [<ExchangeInfoItem> ...]

list_bindings [-p <VHostPath>]

list_connections [<ConnectionInfoItem> ...]

2.vhost / 不能删除

删除/以后,新建立的vhost不能正常使用(即便不删除/,新建立的vhost也是不能正常使用).不知道为什么,有待研究.

3.关于持久化

示例里没有一点儿和持久化相关的东东,而这却是笔者最关心的,想想作为消息服务器如果不能保证消息一定被接收到,算什么事儿啊?比着网上狂转的python版本从php-amqp的库里一点一点儿翻,找到了如下持久化的设置:

接收端声明队列和交换机自动建立:

$ch->queue_declare($_QUEUE,false,true,false,false);

第三个参数设置true保证服务器重启后,自动建立队列

第五个参数设置成false防止接收端没连接的时候丢失消息

$ch->exchange_declare($EXCHANGE, 'direct', false, true, false);

第四个参数设置true保证重启后,自动建立交换机

第五个参数设置false防止接收端断开后,交换机被删除

发布端声明消息持久:

$message = new AMQPMessage(serialize($object), array('content_type' => 'text/plain', 'delivery_mode' => 2));

同时满足了上面三个条件,就可以保证未接收的消息在服务器意外重启以后依然存在了.

4.持久化的后遗症

比如说你初始化了一个队列msgs.你会发现它真的持久了!每次服务器端重启后,通过list_queues命令查看的时候都存在.但是时间久了,这个msgs我们并不需要了,怎么办呢?笔者发现,想清除这个队列只能删除它所在的vhost,然后再重建vhost,再设置vhost的权限.

rabbitmqctl delete_vhost /

rabbitmqctl add_vhost /

rabbitmqctl set_permissions -p / rainbird '.*' '.*' '.*'

要注意,如果这个操作过程中有接收端处于连接状态它们不会自动断开,但也不会再收到消息,需要手动重新连接一下.

5.关于修改监听ip和监听端口

出于一些需要,比如我们有多个ip,我们希望rabbitmq仅运行在指定的ip上.或者考虑到安全问题,我们希望修改一下rabbitmq的监听端口.默认安装完成以后,在/etc下面会有一个rabbitmq的空目录,这时候我们需要手工创建rabbitmq.conf,并写入相关内容.

vi /etc/rabbitmq/rabbitmq.conf

RABBITMQ_NODE_IP_ADDRESS=0.0.0.0

RABBITMQ_NODE_PORT=2222

保存以后重启服务就生效了.

这个东东网上又没介绍,翻了半天+无限尝试才搞出来.

6.关于运行接收端cpu100%问题

第一眼看到接收端会运行一个while等待消息的时候,笔者就知道这个进程肯定cpu占用会100%.在代码里几处while尝试添加usleep无效后,笔者最后还是在官方的问题列表里找到了答案:

vi +286 amqp_wire.inc

293 while ($read < $n (false !== ($buf = fread($this->sock, $n - $read))))

294 {

295 usleep(50000);

296 $read += strlen($buf);

297 $res .= $buf;

298 }

笔者的出发点是对的,只是没找对while.可能有人会奇怪为什么要用usleep(50000)呢?实际上笔者有遇到运行php起来的daemon导致cpu100%的情况.当时笔者加的是usleep(500000)也就是半秒钟.这样就可以使进程看上去cpu占用为0.没想到再降一个数量级也是可以正常的,这次算赚到了.

7.学到了error_log函数

以前有见过这个函数,以为是向系统日志里写log的时候才用得到呢,没想到还可以像下面这样用:

function debug_msg($s)

{

//error_log($s);

}

在不同的地方写上debug_msg,最后不用的时候时候,直接注释掉error_log,不错的小技巧!

暂时就摸索出来这么多东西了,准备拿几个不重要的任务跑跑稳定性试试.

关于php安装amqp的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php安装amqp php安装扩展的几种方法的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did209860
更新时间:2023-05-03   阅读:45次

上一篇: php获取时间前一天 php取当前时间

下一篇:php获取网页源码标签 php网页抓取

最新资料更新

  • 1.php提取数组转map php 数组转xml
  • 2.phpjson提交 phppost提交
  • 3.php提示重复提交 php api防止重复提交
  • 4.php网站后台demo php后端模板
  • 5.php字母循序排列 php字符串排序
  • 6.php类属性分类 php数据类型
  • 7.如何知道php密码 php确认密码
  • 8.php输出jq代码 php输出hello
  • 9.php生成静态代码 php如何实现静态化
  • 10.php+引用swf php引用其他文件内的函数
  • 11.php实现小说目录的方法 php自动生成小说
  • 12.php获取网页乱码 php网页显示乱码
  • 13.php数据抓取实例 php采集数据
  • 14.php支付源码 php支付平台
  • 15.ubuntuphp启动 ubuntu开机启动python
  • 16.php个人博客ppt php博客模板
  • 17.php网络通信 php通信协议
  • 18.imagephp缩放 缩放图像可以改变图像的分辨率吗
  • 19.php项目补充redis php+redis
  • 20.链式作用域php php 链式调用

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]