(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 /* *算法学习自百度.只是学习和记录 */ header("Content-type:text/html;charset=utf-8"); //1.设置奖项,id是奖项id,name是中奖名称,v是中奖概率 $arr =&n...
header() 函数向客户端发送原始的 HTTP 报头。(官方解释)通俗的讲header函数将参数中的字符串作为服务端的响应头来返回给客户端。什么是服务端的响应头?打开谷歌浏览器看看network中的请求response header信息即可。更多的参数百度response header即可浏览器...
(1)swoole启动的主进程是master进程负责全局管理,然后master进程会再fork一个manager进程。(2)manager进程开始统一管理进程创建回收管理。(3)manager进程根据设置的worker_num和task_worker_num来创建work进程和task进程因此启动s...
php7.1引入了PHP异步信号处理函数pcntl_async_signals() 来处理阻塞问题。在php7之前信号处理方式有2种,第一种是基于ticks来每执行一行代码来触发执行信号监听,第二种是直接while(true){ //监听信号 }第一种方式如果某行的代码阻塞时间较长会影响...
将jsonp转为PHP数组和对象。/** * jsonp转数组|Jsonp转json * @param string $jsonp jsonp字符串 * @param bool $as...