(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()); }); }
先看看下面的代码:<?php session_start(); $_SESSION['username']='lucy'; ?>当我们请求访问上面的脚本,默认会在我们的客户端生成一个名为PHPSESSID的cookie,我这里的值是PHPSESSID=...
<?php $data=array('a'=>1,'b'=>2,'c'=>3,'d'=>4); extract($data); var_dump($a,$b,$c,$d); ?>在人人商城中捡到的...
(1)swoole启动的主进程是master进程负责全局管理,然后master进程会再fork一个manager进程。(2)manager进程开始统一管理进程创建回收管理。(3)manager进程根据设置的worker_num和task_worker_num来创建work进程和task进程因此启动s...
今天帮朋友查询wordpress执行超级慢的原因,特此记录开启fpm的慢日志,记录执行超过30秒的脚本request_slowlog_timeout = 30 slowlog = var/log/slow.log查看日志[23-May-2019 17...
为什么使用队列?因为pop取队列具有原子性。假如我们需要秒杀一个商品id,我们先将商品的库存保存到一个队列。例如:<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6...
(1).管道是干嘛的?管道是用于进程之间通信的,传播或交换信息(2).管道有几种?(2.1).匿名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。通常是指父子进程关系。(2.2).高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中...