(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 $a=0.5*100; if(is_int($a)){ echo'int'; } else{ echo'not int'; } ...
如果想在windows中执行php,并且让php脚本在后台运行,可以用下面的cmd命令start /b php D:\wwwroot\default\demo1\run.php例如上面的命令意思后台运行run.php,如果想用php编写异步代码: ...
面试中PHP面试官会问调用一个不存在的方法,如何知道是哪个文件哪行调用的?假设方法是getWorkLoad()回答1:开启PHP错误输出,PHP会输出Fatal error: Call to undefined function getWorkLoad() in D:\wwwroot\thinkpa...
最近在公司开发一个新的项目假设项目域名是a.com,需要接入b.com的单点登陆系统。(1).首先我们会在a.com的登陆页面用iframe引入b.com来显示登陆界面,实际上登陆验证操作都是在b.com上面(2).当b.com验证通过,会在前端ajax请求a.com的回调地址,这个回调地址目的就是...
<?php $member = new class { public function getInfo() { ...
在项目下的composer配置文件修改(PaySdk是我这里一个支付sdk的目录,包含各种各样的支付sdk,这样写的意思让composer自动把PaySdk下的所有文件自动加载):"autoload": { &...