(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()); }); }
因为一个TP项目中客户需要全部网页分享支持自定义图片和描述信息,于是自己封装了下 //share()微信分享链接 //参数1 appid //参数2 appsert //参数3 nonceStr随机码 //参数4 timestamp时间戳 public&nb...
php多进程应用场景主要是非web端,fpm下是不支持多进程的,非类linux操作系统都不支持,请在cli模式使用.可以使用多进程做任务分发,批量计算,批量文件处理,批量爬虫,网络运维等等。下面看一份简单的入门demo//创建子进程 $pid=pcntl_fork(); //返回-1,创建失败,不...
xmlrpc协议是通过http请求xml数据进行通信。webservice中和它相同的是soap。soap调用的确很简单,但是创建wsdl太繁琐,效率低下。xmlrpc很好的解决这个问题。(1).创建xmlrpc服务端(求和函数api)function getSum($method,$ar...
<?php /** * @throws Exception */ function curl() { throw new \Exception('err...
今天帮朋友查询wordpress执行超级慢的原因,特此记录开启fpm的慢日志,记录执行超过30秒的脚本request_slowlog_timeout = 30 slowlog = var/log/slow.log查看日志[23-May-2019 17...
在项目下的composer配置文件修改(PaySdk是我这里一个支付sdk的目录,包含各种各样的支付sdk,这样写的意思让composer自动把PaySdk下的所有文件自动加载):"autoload": { &...