skymvc网站测试之mysql数据生成
skymvc网站测试之mysql数据生成
使用方法:
删除数据 /index.php?m=test_mysql&a=autoDelete
重置自增ID /index.php?m=test_mysql&a=reset
插入数据: /index.php?m=test_mysql&a=autoInsert
<?php
/******
*Author 雷日锦
*本代码在skymvc中使用
*skymvc mysql数据库测试
*******/
class test_mysqlControl extends skymvc{
public $maxrow=30;//每次最多生成多少千行
public $maxThreads=10;
public function __construct(){
parent::__construct();
} public function onDefault(){ } public function onReset(){
if(!empty($_SESSION)){
foreach($_SESSION as $k=>$v){
unset($_SESSION[$k]);
}
}
$this->onIncrement();
} public function getNum($table){
//设置表所需要的记录数
$cf=array(
"article"=>300000,
"test"=>200000,
"test2"=>200000,
);
if(!isset($cf[$table])){
return 200000;
}else{
return $cf[$table];
}
} public function onAutoDelete(){
set_time_limit(0);
ob_implicit_flush(true);
$res=M("article")->query("show tables");
$data=M("article")->fetch_array(PDO::FETCH_NUM);
$this->loadClass("spider");
if($data){
$uk=0;
foreach($data as $k=>$t){
$tables[]=$t[0]; $urls[$uk][]="http://".$_SERVER['HTTP_HOST']."/index.php?m=test_mysql&a=delete&table=".str_replace(TABLE_PRE,"",$t[0]); if($k%$this->maxThreads==($this->maxThreads-1)){
$uk++;
} }
echo "删除开始<br>";
echo '<div id="aid">0</div>
<script>
var i=0;
var it=setInterval(function(){
i++;
document.querySelector("#aid").innerHTML="已经执行"+i+"秒了";
},1000);
</script>';
foreach($urls as $k=>$us){
echo "第".$k."部分<br>";
flush();
@ob_flush();
$this->spider->start($us,function($data){ echo $data['url']." <br>".$data['content']."<br>";
flush();
@ob_flush();
},600);
}
}
echo "本次删结束<br>";
flush();
@ob_flush(); echo "<script>
setTimeout(function(){
window.location.reload();
},1000);
</script>";
} public function onDelete(){
$table=get('table','h');
M($table)->query("delete from ".table($table)." where 1=1 limit 50000");
echo "delete $table success";
}
/*更新自增id*/
public function onIncrement(){
$res=M("article")->query("show tables");
$data=M("article")->fetch_array(PDO::FETCH_NUM);
if($data){
foreach($data as $k=>$t){
$table=str_replace(TABLE_PRE,"",$t[0]);
M($table)->query("ALTER TABLE `sky_".$table."` AUTO_INCREMENT=1;");
}
}
echo "update increment";
} public function onAutoInsert(){
set_time_limit(0);
ob_implicit_flush(true);
$res=M("article")->query("show tables");
$data=M("article")->fetch_array(PDO::FETCH_NUM);
$tables=array();
if($data){
$uk=0;
foreach($data as $k=>$t){
$tables[]=$t[0]; $urls[$uk][]="http://".$_SERVER['HTTP_HOST']."/index.php?m=test_mysql&a=insert&table=".str_replace(TABLE_PRE,"",$t[0]);
if($k%$this->maxThreads==($this->maxThreads-1)){
$uk++;
}
}
$this->loadClass("spider");
echo "开始<br>";
echo '<div id="aid">0</div>
<script>
var i=0;
var it=setInterval(function(){
i++;
document.querySelector("#aid").innerHTML="已经执行"+i+"秒了";
},1000);
</script>'; foreach($urls as $k=>$us){
echo "第".$k."部分<br>";
flush();
@ob_flush();
$this->spider->start($us,function($data){ echo $data['url']." <br>".$data['content']."<br>";
flush();
@ob_flush();
},600);
}
echo "结束<br>";
flush();
@ob_flush();
} echo "<script>
setTimeout(function(){
window.location.reload();
},1000);
</script>";
}
public function onInsert($table=''){
$inauto=true;
if(!$table){
set_time_limit(0);
$inauto=false;
} $table=$table?$table:get('table','h');
if(!$table){
$table="article";
} $fields=$this->getFIelds($table); //为什么只执行到266 百思不得其解
$jnum=$this->getNum($table);
for($j=0;$j<$this->maxrow;$j++){
$rscount=M($table)->selectOne(array(
"fields"=>" count(1)"
));
if($rscount>$jnum){
echo $table."测试数据已经够了<br>";
break;
} if(!inauto){
echo "正在插入第".$j."千条<br>";
flush();
@ob_flush();
ob_clean();
}
$data=array(); for($i=0;$i<1000;$i++){
$data[]=$this->dbPost($table);
} $sql=" insert into ".table($table)."(".implode(",",$fields).") values ";
foreach($data as $k=>$v){
if($k>0){
$sql.=",";
}
$sql.="("._implode($v).")";
}
$sql.=";"; M($table)->query($sql);
unset($data);
unset($sql);
} echo "success";
}
public function getFIelds($table){
$fields=M($table)->getFields();
foreach($fields as $k=>$v){
if($k==0) continue;
$data[]=$v['Field'];
}
return $data;
}
public function dbPost($table,$msg=''){
if(isset($_SESSION["field_".$table])){
$fields=$_SESSION["field_".$table];
}else{
$fields=M($table)->getFields();
$_SESSION["field_".$table]=$fields;
} $msg=$msg?$msg:"skymvc是".date("Ymdhis")."最贴心的".date("Ymdhis")."php开发框架,快来使用吧!";
$data=array();
$gid=$this->getId($table);
foreach($fields as $k=>$v){
if($k==0) continue;
if(preg_match("/tinyint/i",$v['Type'])){
$data[$v['Field']]=rand(0,3);
}elseif(preg_match("/int/i",$v['Type'])){
if($v['Field']=='dateline'){
$data[$v['Field']]=time();
}else{
$data[$v['Field']]=$gid;
}
}elseif(preg_match("/decimal/i",$v['Type'])){
$data[$v['Field']]=rand(1,100000);
}elseif(preg_match("/datetime/i",$v['Type']) ){
$data[$v['Field']]=date("Y-m-d H:i:s");
}elseif($v['Field']=='bstatus'){
$data[$v['Field']]=1;
}else{
$data[$v['Field']]=$msg;
} }
return $data;
} public function getId($table){
if(!isset($_SESSION["autoid_$table"])){
$_SESSION["autoid_$table"]=1;
}else{
$_SESSION["autoid_$table"]++;
}
return $_SESSION["autoid_$table"]; } } ?>
skymvc网站测试之mysql数据生成的更多相关文章
- PowerDesigner反向生成Mysql数据原型
PowerDesigner反向生成Mysql数据原型 注意事项: (1)JVM 要32位的. (2)需配置JAVA_HOME环境变量指向所需JVM. (3)需配置CLASSPATH环境变量执行 MyS ...
- MYSQL数据回流
一般的网站应用中,总会有部分二次数据(处理过的原始数据)展现给前台,比如,拿购物网站来说,购买进口奶粉最多的用户群体:哪类产品消费增长趋势最旺盛:用户的消费历史归类等都是二次数据.由于这部分 ...
- Django:(博客系统)使用使用mysql数据->后台管理tag/post/category的配置
Django后台一般是不需要人为的去开发的,因为django已经通过配置实现哪些模块是后台需要管理,如何排序,列表展示哪些列,列显示名称,是否为空(默认值),过滤条件,分页页数,列表中哪些项可编辑等等 ...
- 性能测试之mysql监控、优化
我们在做性能测试的目的是什么,就是要测出一个系统的瓶颈在哪里,到底是哪里影响了我们系统的性能,找到问题,然后解决它.当然一个系统由很多东西一起组合到一起,应用程序.数据库.服务器.中中间件等等很多东西 ...
- MySQL数据备份与还原(mysqldump)
一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...
- 大数据技术之_25_手机APP信息统计系统项目_01_APP 数据生成模块 + 数据收集模块 + 数据处理模块框架搭建 + 业务需求处理 + 数据展示模块 +项目总结 + 问题总结
一 项目概述1.1 角色1.2 业务术语1.3 项目效果展示二 项目需求三 项目概要3.1 项目技术架构3.2 项目目录结构3.3 项目技术选型3.4 项目整体集群规划3.5 创建项目工程四 APP ...
- day 50 MySQL数据备份与还原(mysqldump)
MySQL数据备份与还原(mysqldump) 一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Databas ...
- 转 MySQL 数据备份与还原
MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html 一.数据备份 1.使用mysqldump命令备份 mysqldum ...
- Charted – 自动化的可视化数据生成工具
Charted 是一个让数据自动生成可视化图表的工具.只需要提供一个数据文件的链接,它就能返回一个美丽的,可共享的图表.Charted 不会存储任何数据.它只是获取和让链接提供的数据可视化. 在线演示 ...
随机推荐
- spring boot 数据库连接池配置
HikariCP 连接池配置: http://stackoverflow.com/questions/29650501/hikaricp-starts-when-mvn-spring-bootrun- ...
- android访问asset目录下的资源
android提供了AssetManager来访问asset目录下的资源, 在activity中通过getAssets()获取AssetManager 常用的api如下: 1.列举路径下的资源Stri ...
- mysql 源代码学习 博客 [lock..]
http://blog.chinaunix.net/uid/28364803/cid-168292-list-1.html
- InnoTop
是一个系统活动报告,类似于Linux性能工具,它与Linux的top命令相仿,并参考mytop工具而设计. 它专门用后监控InnoDB性能和MySQL服务器.主要用于监控事务,死锁,外键,查询活动,复 ...
- MVC - 身份验证
FormsAuthenticationTicket 使用此类来为用户生成一个身份票据 持有该票据则说明该用户是通过了身份验证的用户 可以随时访问某些资源 我们先创建几个类 //用户 public c ...
- android ViewPager滑动事件讲解
首先ViewPager在处理滑动事件的时候要用到OnPageChangeListener OnPageChangeListener这个接口需要实现三个方法:(onPageScrollStateChan ...
- MAC终端显示隐藏文件,关闭显示
1.显示隐藏文件夹显示:defaults write com.apple.finder AppleShowAllFiles -bool true (1)复制“defaults write com.ap ...
- Android_ImageView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- 深入理解计算机系统第二版习题解答CSAPP 2.6
使用打印字节的方式可以知道十进制数12345的十六进制为0x00003039,十进制浮点数12345.0的十六进制为0x4640E400. 转换为二进制为 /* 0 0 0 0 3 0 3 9 *** ...
- 解决Ubuntu下sublime中不能输入中文的问题
解决Ubuntu下sublime中不能输入中文的问题 Ubuntu下安装sublime后,不能输入中文,而在其他软件中能正常输入,这是sublime的bug,解决方案是在通过shell在每次运行sub ...