php导出mongo日志,导出mongo库到本地
需求:
在yii框架架下,导出生产mongo库中的数据到json文件,下载到本地
调用:
1.在/web/Controllers/TestController.php下引用
public function actionExport()
{
public $target='/WWW/web/html/import/'; //windows 导出文件所在目录
$export =new Export($target,'QuestionUser',96);
}
2.在/web/model下创建Export.php
/*导出mongo库中的数据
* @author lizhihui
* @date 2018-5-29
* 调用例子:Export('MyModel',96); //导出数据库MyModel中qId为96的数据
*/
Class Export
{
public $target;
public $model; //数据库对象 string,例如:'QuestionAnswer','QuestionUser'
public $qId; //问卷id int
public $db;
/*
* $target 导出文件所在目录
* $model
* $qId
*/
public function __construct($target,$model,$qId)
{
$this->target = $target;
$this->db=$model;
$this->model = new $model;
$this->qId = (int)$qId;
$this->export();
}
/**
* 导出mongo生产数据用于本地测试
* @author lizhihui
* @date 2018-5-29
*/
public function Export()
{
$iCount = $this->model->count(array(
'conditions'=>array(
'qId'=>array('equals' => $this->qId),
))
);
if(!$iCount){
$this->showMessage('数据为空');
}
$nStart = 0; //起始记录
$nCount = 100; //每次处理记录数
$nPage = intval($iCount/$nCount)+1;
$aReault=array();
for ($i=0;$i
$sWhere = array(
'conditions'=>array(
'qId'=>array('equals' => $qId),
),
'limit'=>$nCount,
'offset'=>$nStart,
);
$arr = $this->model->findAll($sWhere);
if(!is_dir($this->target)){
mkdir($this->target);
}
//写入文件
$limit = 1000;//每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
foreach ($arr as $key => $val)
{
if($key!=0 && $key%$limit==0){
ob_flush();
flush();
}
$attr=$val->attributes;
//整理数据,删除不必要的键值
unset($attr['_id']);
unset($attr['current_db']);
unset($attr['pageInfo']);
$aReault[]=$attr;
}
$i++;
$nStart = $i*$nCount;
}
$filePath=$this->target.$this->db.'_'.$this->qId.'.json';
file_put_contents($filePath,json_encode($aReault));
//下载文件
if(!file_exists($filePath)){
$this->showMessage('目标文件不存在!');
}
header('Content-Type: application/json');
header('Content-Disposition: attachment; filename='.$this->db.'_'.$this->qId.'.json');
header('Accept-Ranges: bytes');
echo file_get_contents($filePath);
}
/**
* 信息输出
*/
private function showMessage($str, $err = 0) {
if (!$str) {
return false;
}
if ($err) {
echo "[ERROR]";
} else {
echo "[SUCCESS]";
}
echo date("Y-m-d H:i:s", time()) . " " . $str . "\n";
exit;
}
}
php导出mongo日志,导出mongo库到本地相关推荐
- mongo数据库导出/导入
### mongo数据库导出 mongodump --host=localhost --port=27017 -d db-xx -o='/opt/backup/dumpfiles/' mongodum ...
- ie如何导入html文件类型,Magicodes.IE: 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf和Html。...
Magicodes.IE 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel.Word.Pdf和Html. 疯狂的徽章 GitHub Azure DevOps Build Status: ...
- android /data/system/dropbox,Android导出dropbox日志
文章内容已重新排版:Android导出dropbox日志,请到该链接浏览,谢谢支持. 大项目中出现anr几乎是必然事件,这里我就不再去赘述怎么分析anr日志了.但是作为分析anr重要依据的必然离不开d ...
- shell脚本批量导出MYSQL数据库日志/按照最近N天的形式导出二进制日志[连载之构建百万访问量电子商务网站]...
shell脚本批量导出MYSQL数据库日志/自动本地导出MYSQL二进制日志,按天备份[连载之构建百万访问量电子商务网站] 出处:http://jimmyli.blog.51cto.com/我站在巨人 ...
- 腾讯微博qq说说备份导出工具_QQ空间导出助手 – 日志、相册、视频、留言板、QQ 好友列表等...
QQ空间导出助手 是一款用来导出 QQ 空间的日志.私密日志.说说.相册.留言板.QQ好友.视频为文件的 Chrome 扩展,供永久保存. 2T非常喜欢 QQ空间导出助手 介绍里的一段话: 落叶随风, ...
- [T系统]手帐04:无痕记录系统相关导出的日志
● 开发环境:Eclipse+Tomcat+MySQL+SVN ● 系统架构:JQuery+Bootstrap+JFinal+Memcache 概述:项目后期无痕追加"导出"的日志 ...
- jvm导出dump日志,分析内存情况
1. 查看内存情况 top free top pid=18426 占用内存比例很高 2. 导出dump日志 jmap -dump:format=b,file=heap.hprof 18426 当前目录 ...
- svn服务器日志在哪个文件夹,SvnLog(svn日志导出工具)
SvnLog是一款可以帮助您搜索日志的工具,当您在操作SVN服务器的时候,为了知道自己执行了哪些项目,知道服务器运行的日常情况,知道在服务器上修改的文件,您可以通过日志搜索的方式直接查看记录的数据,在 ...
- Excel模板导出之动态导出
说明 目前Magicodes.IE已支持Excel模板导出时使用JObject.Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程. 本功能的想法.部分实现初步源于a ...
最新文章
- 6G+128G的华为新机真香,自费送一台!
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- 磁金融宣布完成1.2亿元B轮融资,宽带资本领投
- L2-1 简单计算器 (25 分)详解c语言 模拟堆栈
- .NET 指南:转换操作符
- 用shell编写一个三角形图案
- 程序员过关斩将--重复的请求并不好过滤
- Linux 混合编译opencv与opencv_contrib的android版本
- pytorch实现Dropout与正则化防止过拟合
- vue.js中的组件是什么?
- 重磅!谷歌大脑提出EfficientNet平衡模型扩展三个维度,取得精度-效率的最大化!...
- 12.混淆——采样低频信号,采样高频信号_3
- html页面代码重用-document writeln
- RCNN学习笔记(1):Rich feature hierarchies for accurate object detection and semantic segmentation
- Visual Studio中删除所有空行
- SQL Server 2012 中 SSAS 多维数据浏览器已经废除
- 计算机管理模糊,电脑显示器显示有点模糊怎么办
- linux中删除svn中文件,删除SVN三种方法delSvn(windows+linux)
- Silverlight Blend动画设计系列五:故事板(StoryBoards)和动画(Animation)
- java编程获取屏幕分辨率_Java及Jquery获取屏幕分辨率的实现代码