shell模拟php多进程从redis获取数据(一个库多个key值)
2018-01-16 18:52
561 查看
背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理
环境: VMware虚拟机 内存:1G 硬盘:60G php环境:PHP Version 5.6.31 php框架:TP
测试:事先在redis里面插入了60W条数据,分别模拟php单进程和多进程(3个多进程)
php单进程代码:
public function sinsert() {
//$redis = new Redis();
//$redis->connect('127.0.0.1', 6379);
//写到list类型缓存里面
//lpush('zc_hk_list', serialize($zc_hk))
//$accountRepayModel = D('AccountRepay');
$this->repay->start();
for($i=1;$i<=600000;$i++) {
$arr = array("k"=>$i,"v"=>"dan".$i);
//var_dump($arr);//exit;
$this->redis->lpush('hongniu', serialize($arr));
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '全量写入redis数据发送脚本');
$this->repay->clear();
/*$key = 'name';
$value = $redis->get($key);
var_dump($value);*/
}
public function slist() {
$this->repay->start();
$list_len = $this->redis->llen('hongniu');
Log::write('单进程一共有:'.$list_len."条");
if ($list_len == 0) return;
while (true) {
//$result = $this->redis->rpop('hongniu');
$result = $this->redis->lpop('hongniu');
if(empty($result)) {break;}
$repayment_data= unserialize($result);
if(is_array($repayment_data) && !empty($repayment_data)) {
//Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
Log::write('单进程写日志的结果是:'.json_encode($repayment_data));
}
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '单进程导出redis数据脚本');
$this->repay->clear();
}
php多进程代码
public function binsert() {
//$redis = new Redis();
//$redis->connect('127.0.0.1', 6379);
//写到list类型缓存里面
//lpush('zc_hk_list', serialize($zc_hk))
//$accountRepayModel = D('AccountRepay');
$this->repay->start();
for($i=1;$i<=600000;$i++) {
$arr = array("k"=>$i,"v"=>"dan".$i);
//var_dump($arr);//exit;
if($i%3==0) {
$this->redis->lpush('hongniu0', serialize($arr));
}elseif($i%3==1) {
$this->redis->lpush('hongniu1', serialize($arr));
}else{
$this->redis->lpush('hongniu2', serialize($arr));
}
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '全量分别写入不同redis数据发送脚本');
$this->repay->clear();
/*$key = 'name';
$value = $redis->get($key);
var_dump($value);*/
}
public function blist1() {
$this->repay->start();
$list_len = $this->redis->llen('hongniu0');
Log::write('多进程一一共有:'.$list_len."条");
if ($list_len == 0) return;
while (true) {
//$result = $this->redis->rpop('hongniu');
$result = $this->redis->lpop('hongniu0');
if(empty($result)) {break;}
$repayment_data= unserialize($result);
if(is_array($repayment_data) && !empty($repayment_data)) {
//Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
Log::write('多进程写日志的结果是1:'.json_encode($repayment_data), Log::INFO, Log::FILE, LOG_PATH.'blist1_'.date('Ymd').'.log');
}
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '多进程导出redis数据脚本1');
$this->repay->clear();
}
public function blist2() {
$this->repay->start();
$list_len = $this->redis->llen('hongniu1');
Log::write('多进程二一共有:'.$list_len."条");
if ($list_len == 0) return;
while (true) {
//$result = $this->redis->rpop('hongniu');
$result = $this->redis->lpop('hongniu1');
if(empty($result)) {break;}
$repayment_data= unserialize($result);
if(is_array($repayment_data) && !empty($repayment_data)) {
//Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
Log::write('多进程写日志的结果是2:'.json_encode($repayment_data), Log::INFO, Log::FILE, LOG_PATH.'blist2_'.date('Ymd').'.log');
}
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '多进程导出redis数据脚本2');
$this->repay->clear();
}
public function blist3() {
$this->repay->start();
$list_len = $this->redis->llen('hongniu2');
Log::write('多进程三一共有:'.$list_len."条");
if ($list_len == 0) return;
while (true) {
//$result = $this->redis->rpop('hongniu');
$result = $this->redis->lpop('hongniu2');
if(empty($result)) {break;}
$repayment_data= unserialize($result);
if(is_array($repayment_data) && !empty($repayment_data)) {
//Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
Log::write('多进程写日志的结果是3:'.json_encode($repayment_data), Log::INFO, Log::FILE, LOG_PATH.'blist3_'.date('Ymd').'.log');
}
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '多进程导出redis数据脚本3');
$this->repay->clear();
}
shell文件(batch.sh)代码:
#!/bin/sh
for((i=3;i>=1;i--))
do
{
curl http://192.168.32.128/index.php/Business/blist$i
}&
done
测试结果如下所示:
环境: VMware虚拟机 内存:1G 硬盘:60G php环境:PHP Version 5.6.31 php框架:TP
测试:事先在redis里面插入了60W条数据,分别模拟php单进程和多进程(3个多进程)
php单进程代码:
public function sinsert() {
//$redis = new Redis();
//$redis->connect('127.0.0.1', 6379);
//写到list类型缓存里面
//lpush('zc_hk_list', serialize($zc_hk))
//$accountRepayModel = D('AccountRepay');
$this->repay->start();
for($i=1;$i<=600000;$i++) {
$arr = array("k"=>$i,"v"=>"dan".$i);
//var_dump($arr);//exit;
$this->redis->lpush('hongniu', serialize($arr));
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '全量写入redis数据发送脚本');
$this->repay->clear();
/*$key = 'name';
$value = $redis->get($key);
var_dump($value);*/
}
public function slist() {
$this->repay->start();
$list_len = $this->redis->llen('hongniu');
Log::write('单进程一共有:'.$list_len."条");
if ($list_len == 0) return;
while (true) {
//$result = $this->redis->rpop('hongniu');
$result = $this->redis->lpop('hongniu');
if(empty($result)) {break;}
$repayment_data= unserialize($result);
if(is_array($repayment_data) && !empty($repayment_data)) {
//Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
Log::write('单进程写日志的结果是:'.json_encode($repayment_data));
}
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '单进程导出redis数据脚本');
$this->repay->clear();
}
php多进程代码
public function binsert() {
//$redis = new Redis();
//$redis->connect('127.0.0.1', 6379);
//写到list类型缓存里面
//lpush('zc_hk_list', serialize($zc_hk))
//$accountRepayModel = D('AccountRepay');
$this->repay->start();
for($i=1;$i<=600000;$i++) {
$arr = array("k"=>$i,"v"=>"dan".$i);
//var_dump($arr);//exit;
if($i%3==0) {
$this->redis->lpush('hongniu0', serialize($arr));
}elseif($i%3==1) {
$this->redis->lpush('hongniu1', serialize($arr));
}else{
$this->redis->lpush('hongniu2', serialize($arr));
}
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '全量分别写入不同redis数据发送脚本');
$this->repay->clear();
/*$key = 'name';
$value = $redis->get($key);
var_dump($value);*/
}
public function blist1() {
$this->repay->start();
$list_len = $this->redis->llen('hongniu0');
Log::write('多进程一一共有:'.$list_len."条");
if ($list_len == 0) return;
while (true) {
//$result = $this->redis->rpop('hongniu');
$result = $this->redis->lpop('hongniu0');
if(empty($result)) {break;}
$repayment_data= unserialize($result);
if(is_array($repayment_data) && !empty($repayment_data)) {
//Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
Log::write('多进程写日志的结果是1:'.json_encode($repayment_data), Log::INFO, Log::FILE, LOG_PATH.'blist1_'.date('Ymd').'.log');
}
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '多进程导出redis数据脚本1');
$this->repay->clear();
}
public function blist2() {
$this->repay->start();
$list_len = $this->redis->llen('hongniu1');
Log::write('多进程二一共有:'.$list_len."条");
if ($list_len == 0) return;
while (true) {
//$result = $this->redis->rpop('hongniu');
$result = $this->redis->lpop('hongniu1');
if(empty($result)) {break;}
$repayment_data= unserialize($result);
if(is_array($repayment_data) && !empty($repayment_data)) {
//Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
Log::write('多进程写日志的结果是2:'.json_encode($repayment_data), Log::INFO, Log::FILE, LOG_PATH.'blist2_'.date('Ymd').'.log');
}
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '多进程导出redis数据脚本2');
$this->repay->clear();
}
public function blist3() {
$this->repay->start();
$list_len = $this->redis->llen('hongniu2');
Log::write('多进程三一共有:'.$list_len."条");
if ($list_len == 0) return;
while (true) {
//$result = $this->redis->rpop('hongniu');
$result = $this->redis->lpop('hongniu2');
if(empty($result)) {break;}
$repayment_data= unserialize($result);
if(is_array($repayment_data) && !empty($repayment_data)) {
//Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
Log::write('多进程写日志的结果是3:'.json_encode($repayment_data), Log::INFO, Log::FILE, LOG_PATH.'blist3_'.date('Ymd').'.log');
}
}
$this->repay->stop();
$spent_time = $this->repay->spent($echo=true, '多进程导出redis数据脚本3');
$this->repay->clear();
}
shell文件(batch.sh)代码:
#!/bin/sh
for((i=3;i>=1;i--))
do
{
curl http://192.168.32.128/index.php/Business/blist$i
}&
done
测试结果如下所示:
相关文章推荐
- shell模拟php多进程从redis获取数据(多个库)
- shell模拟php多进程从redis获取数据(多个redis实例)
- shell模拟php多进程从redis获取数据
- 模拟页面获取的php数据(四)
- 用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
- PHP模拟登录并获取数据
- phpredis:php一个key-value用法
- PHP模拟登录并获取数据
- joinquant, 一个程序化交易模拟的平台,可以获取所有股票的财务、实时数据
- 跟着百度学PHP[17]-PHP扩展CURL的模拟登陆并获取数据
- php中将一段数据存到一个txt文件中,并获取其内容显示。
- 分享一个强大的采集类,还可以模拟php多进程
- PHP中使用CURL模拟登录并获取数据实例
- PHP获取接口数据(模拟Get)
- PHP模拟登录并获取数据
- 模拟页面获取的php数据(二)
- PHP 基于laravel框架获取微博数据之一 模拟新浪微博登录
- PHP 之 CURL 模拟登陆并获取数据
- PHP模拟登录并获取数据
- php模拟GET与POST向微信接口提交及获取数据的方法