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 不会存储任何数据.它只是获取和让链接提供的数据可视化. 在线演示 ...
随机推荐
- Android 入门第一课 一个简单的提示框
1.打开Android开发环境Eclipse来到主界面 2.新建一个安卓项目 File->New->Android Application project 在上面有红色错误的地方填上应用程 ...
- SMB带宽限制
1.安装SMB带宽限制功能 Add-WindowsFeature FS-SMBBW 2.通过PowerShell命令限制SMB带宽 #限制非Hyper-V over SMB or Live Migra ...
- PHP工具下载地址
Zend Debugger下载地址:http://www.zend.com/en/products/studio/downloads 需要先注册一下,然后才能进行下载.
- redhat 6 配置 yum 源的两种方法
由于 redhat的yum在线更新是收费的,如果没有注册的话不能使用,如果要使用,需将redhat的yum卸载后,重启安装,再配置其他源. 本文包括配置本地源及第三方源.第三方源包括:网易,epe ...
- careercup-数学与概率
7.3 给定直角坐标系上的两条线,确定这两条线会不会相交. 解法: 此题有很多不确定的地方:两条线的格式是什么?两条线实为同一条怎么处理?这些含糊不清的地方最好跟面试官讨论一下. 下面将做出以下假设: ...
- 进程环境之main函数
C程序总是从main函数开始执行.main函数的原型是: int main( int argc, char *argv[] ); 其中,argc是命令行参数的数目,argv是指向参数的各个指针所构成的 ...
- 【转】cocos2d-x获取系统时间——2013-08-25 10
欢迎转载,本帖地址:http://blog.csdn.net/jinjian2009/article/details/9449585 之前使用过cocos2d-x获取系统时间,毫秒级的 long ge ...
- 下载好一个android软件之后,怎样自动提示安装?
最近在做毕设,里面牵涉到版本更新,当有新版本时可以下载新版本,下载完成之后提示安装.那么怎么实现下载完成之后提示安装呢? 直接上代码吧: File mFile = new File(Environme ...
- Mac安装Mysql过程
1.Mysql官网下载安装包 http://dev.mysql.com/downloads/mysql/ 选择Mac OS X 10.10 (x86, 64-bit), DMG Archive版本下载 ...
- JBPM WEB CONSOLE安装实录
http://www.blogjava.net/paulwong/archive/2009/03/13/259551.html JBPM WEB CONSOLE是一个B/S端的,能管理JBPM的流程和 ...