(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());
});
} //参数1 文件名 参数2 缩放比例 function _thumb($_filename,$_percent){ ob_clean();...
原理:使用curl_init()创建多个请求实例,再使用curl_multi_init()批量执行创建的多个请求实例。文件1:curl.php<?php $threads=500;//并发请求次数 $url='http://blog.cn/index.php?';...
md5/sha1+salt方式是目前各大cms常用的加密方式,虽然salt安全,但是各大md5网站也在研究这个方向,那么我们应该选择password_hash动态hash来助力,一种密码有多种hash结果.看代码模拟登陆.<?php //01.注册 $user ='zhang...
php多进程应用场景主要是非web端,fpm下是不支持多进程的,非类linux操作系统都不支持,请在cli模式使用.可以使用多进程做任务分发,批量计算,批量文件处理,批量爬虫,网络运维等等。下面看一份简单的入门demo//创建子进程 $pid=pcntl_fork(); //返回-1,创建失败,不...
开发com组件可以用c++,vc++,net,我比较熟悉net,演示用dnet(1).创建项目:启动vs2017,新建项目,选择Visual C# ->Windows桌面->类库通用windows(2). 修改Com项目:点击 项目->项目属性,再点击应用程序->程序集信息,...
参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)代码:<?php $dbms = 'mysql'; $host = '192.168.8.8'; $dbName =&n...