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数据生成的更多相关文章

  1. PowerDesigner反向生成Mysql数据原型

    PowerDesigner反向生成Mysql数据原型 注意事项: (1)JVM 要32位的. (2)需配置JAVA_HOME环境变量指向所需JVM. (3)需配置CLASSPATH环境变量执行 MyS ...

  2. MYSQL数据回流

         一般的网站应用中,总会有部分二次数据(处理过的原始数据)展现给前台,比如,拿购物网站来说,购买进口奶粉最多的用户群体:哪类产品消费增长趋势最旺盛:用户的消费历史归类等都是二次数据.由于这部分 ...

  3. Django:(博客系统)使用使用mysql数据->后台管理tag/post/category的配置

    Django后台一般是不需要人为的去开发的,因为django已经通过配置实现哪些模块是后台需要管理,如何排序,列表展示哪些列,列显示名称,是否为空(默认值),过滤条件,分页页数,列表中哪些项可编辑等等 ...

  4. 性能测试之mysql监控、优化

    我们在做性能测试的目的是什么,就是要测出一个系统的瓶颈在哪里,到底是哪里影响了我们系统的性能,找到问题,然后解决它.当然一个系统由很多东西一起组合到一起,应用程序.数据库.服务器.中中间件等等很多东西 ...

  5. MySQL数据备份与还原(mysqldump)

    一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...

  6. 大数据技术之_25_手机APP信息统计系统项目_01_APP 数据生成模块 + 数据收集模块 + 数据处理模块框架搭建 + 业务需求处理 + 数据展示模块 +项目总结 + 问题总结

    一 项目概述1.1 角色1.2 业务术语1.3 项目效果展示二 项目需求三 项目概要3.1 项目技术架构3.2 项目目录结构3.3 项目技术选型3.4 项目整体集群规划3.5 创建项目工程四 APP ...

  7. day 50 MySQL数据备份与还原(mysqldump)

      MySQL数据备份与还原(mysqldump)   一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Databas ...

  8. 转 MySQL 数据备份与还原

    MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html   一.数据备份 1.使用mysqldump命令备份 mysqldum ...

  9. Charted – 自动化的可视化数据生成工具

    Charted 是一个让数据自动生成可视化图表的工具.只需要提供一个数据文件的链接,它就能返回一个美丽的,可共享的图表.Charted 不会存储任何数据.它只是获取和让链接提供的数据可视化. 在线演示 ...

随机推荐

  1. 为Centos安装自定义yum源

    大家都知道,大部分java生产欢迎用的是linux系统.linux系统分为redhat系列和debian系列,各有各的优点.老沙比较喜欢redhat系列,所以一直使用centos.centos可以使用 ...

  2. CSS-div漂浮

    显示效果如下: 代码如下: <div style="width:100%;border-top:0px solid #999999;"> <div style=& ...

  3. Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明

    今天给大家介绍下Android中滑屏功能的一个基本实现过程以及原理初探,最后给大家重点讲解View视图中scrollTo 与 scrollBy这两个函数的区别 . 首先 ,我们必须明白在Android ...

  4. bindiff 4.2使用

    要求IDA 6.8 程序1与程序2混合比较图 2---------------------------------------------------------------------------- ...

  5. list add元素覆盖之前元素问题思考

    最近码墙时发现了一个很有意思的问题,定义一个引用对象,如果在循环外面定义对象,在循环里list.add(对象),最后的结果却是所有的对象值都是一样的,即每add一次,都会把之前所有的数据覆盖掉,蛮有趣 ...

  6. git对象存储

    之前提到当存储数据内容时,会在objects文件夹下存储一个git对象.我们花些时间来看看 Git 是如何存储对象的.你将看来如何通过 Ruby 脚本语言存储一个 blob 对象 ,有必要了解一下对象 ...

  7. Java并发——Fork/Join框架

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/4631466. ...

  8. hibernate篇章四-- Hibernate配置文件中hiberante.hbm2ddl.auto四个参数的配置

    我们在搭建环境的时候,在配置文件中有一个属性标签为: <property name="hibernate.hbm2ddl.auto">     </propert ...

  9. Linux的各种命令(android adb shell)

    win+r 调出运行,输入CMD adb shell 进入手机的控制终端,相当于原生的Linux系统的各种操作. 当提示符为$符号,说明未获得超级管理员权限,输入su,可编程# adb kill-se ...

  10. 【转】浅析Windows编程的剪贴板

    摘要: 本文对Windows剪贴板机制作了深入.全面的阐述,具体内容包括:文本.位图.DSP.自定义格式剪贴板的使用和多数据项和延迟提交技术. 关键词: VC++6.0: 剪贴板机制:数据格式:延迟提 ...