(1).config.php 配置文件
<?php /** * RabbitMQ_Config */ $config = [ 'host' => '127.0.0.1', 'port' => '5672', 'login' => 'guest', 'password' => 'guest', 'vhost' => '/' ];
(2).producer.php 生产者文件
<?php //加载配置文件 require './config.php'; global $config; //设置交换机和路由Key $ename = 'e_linvo'; $rname = 'r_router'; //实例化AMQP(必须手动connect) $conn = new AMQPConnection($config); if ($conn->connect() == false) { die('Cannot connect...'); } //创建Channel(),Why?Who? //如果每次访问MQ都建立一个连接,在量大的时候建立TCP开销巨大,Channel是在connection内部建立的逻辑连接 $channel = new AMQPChannel($conn); //创建交换机并设置交换机名称 $exChange = new AMQPExchange($channel); $exChange->setName($ename); //通过交换机发送消息 $message = [ 'userid' => 1024, 'username' => 'php', ]; $message = json_encode($message); $exChange->publish($message, $rname); echo '投递队列成功<br/>';
(3).consumer.php 消费者文件
<?php //加载配置文件 require './config.php'; global $config; //设置交换机和路由Key和队列key $ename = 'e_linvo'; $rname = 'r_router'; $qname = 'q_queler'; //实例化AMQP(必须手动connect) $conn = new AMQPConnection($config); if ($conn->connect() == false) { die('Cannot connect...'); } //创建Channel(),Why?Who? //如果每次访问MQ都建立一个连接,在量大的时候建立TCP开销巨大,Channel是在connection内部建立的逻辑连接 $channel = new AMQPChannel($conn); //创建交换机并设置交换机名称、交换数据类型、持久化 $exChange = new AMQPExchange($channel); $exChange->setName($ename); $exChange->setType(AMQP_EX_TYPE_DIRECT); $exChange->setFlags(AMQP_DURABLE); $exChange->declareExchange(); //创建队列,设置队列名称,并设置持久化 $queue = new AMQPQueue($channel); $queue->setName($qname); $queue->setFlags(AMQP_DURABLE); $queue->declareQueue(); //将队列和交换机和路由进行绑定 $queue->bind($ename, $rname); //Cli阻塞接收消息队列 while (true) { $queue->consume(function ($envelope, $queue) { //获取队列的数据 $data = $envelope->getBody();//队列数据 $data = json_decode($data); //处理数据 if ($data) { //todo var_dump($data); } //手动Ack应答.确认收到信息.队列会删除本条 $queue->ack($envelope->getDeliveryTag()); }); }
<!doctype html> <html> <head> <meta charset="utf-8"> <title>demo</title> </head> <bod...
首先下载wkhtmltox-0.12.4_linux-generic-amd64.tar.xz (不要下载RPM包,依赖太多,需要x-server支持),并解压,执行测试运行正常tar wkhtmltox-0.12.4_linux-generic-amd64.tar.xzcd...
在PHP中,大部分变量类型,如字符串,整型,浮点,数组等都是值类型的,而类和对象是引用类型.和其他语言有点差距.(1).在值类型中我们直接使用&符号表示指向对应变量的内存地址,当前变量和被指向的变量只要有1个的值被修改都会直接影响另外一个变量的值发生变化。(ps:还是非常节省内存的,可以使用...
md5/sha1+salt方式是目前各大cms常用的加密方式,虽然salt安全,但是各大md5网站也在研究这个方向,那么我们应该选择password_hash动态hash来助力,一种密码有多种hash结果.看代码模拟登陆.<?php //01.注册 $user ='zhang...
逛公众号文章看到文章"php实现事件监听与触发的方法,你用过吗?",我就好奇了,php又不是asp.net的webform,哪里来的服务端事件监听。于是学习了一波。先看下监听类:class Event { /** &nbs...
(1).学习目标: 了解常见信号类型(百度PHP支持的信号类型),(2).相关函数学习: (2.1).pcntl_signal函数用于设置一个信号管理器接收进程信号,参数1:信号类型,参数2:回调函数,用于在接收到参数1类型的信...