需求:

带yii框架下写一个定时任务,扫描某一目录$target下的json文件,并导入指定的数据库中

实现:

1.把需要入库的json文件放在指定目录$target下

2.执行定时任务,导入到mongo库Vote_teacher中

/opt/modules/php/bin/php /www/web/protected/yiic.php import VoteTeacher

3.定时任务代码:

/web/protected/commandsImportCommand.php

/**

* 导入mongo库到测试环境

*

* @author lizhihui

* @date 2018-4-9

* @console php www/web/protected/yiic.php import VoteTeacher> /tmp/abc1.txt

*/

class ImportCommand extends CConsoleCommand

{

public $target='/www/web/html/import/'; //扫描的目录

public $model; //入库的数据库对象

public function run($args) {

if (isset($args[0])) {

$this->showMessage("params error", 1);

exit;

}

$this->model = $args[0];

$this->import();

}

/**

* 分析用户回答的信息并按格式入库vote_answer

* @author lizhihui

* @date 2018-4-9

*/

private function import()

{

$files = scandir($this->target);

//读取目录下文件

foreach ($files as $key => $val) {

$val = pathinfo($val);

$extension = $val['extension'];

//过滤掉非json格式

if($extension!='json'){

continue;

}

$filePath=$this->target.$val['basename'];

$fp=fopen($filePath,'r');

$content='';

while (!feof($fp)){

$content.=fread($fp, filesize($filePath)/10);//每次读出文件10分之1

//进行处理

}

$arr=json_decode($content);

if(empty($arr)){

$this->showMessage("no data to import");

die();

}

//实例化不同数据库

$tag=true;

foreach ($arr as $key => $val) {

//存储

$aVal = (array)$val;

$model = new $this->model;

if($model instanceof SMongodb){//动态字段存储

foreach ($aVal as $k => $v) {

$model->$k=$v;

}

}else{//非动态字段存储

$model->attributes=$aVal;

}

if(!$model->save()){

$tag=false;

}else{

unset($model); //销毁一个对象,再次使用的时候会new一个新的

}

}

}

if(!$tag){

$this->showMessage("some error in import");

}else{

$this->showMessage('import success!');

}

}

/**

* 信息输出

* @author lizhihui

* @date 2018-4-9

*/

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";

}

}

php扫描目录入库,yii框架,扫描目录下文件入数据库相关推荐

  1. mysql复制文件迁移后看不到表_mysql 直接拷贝data 目录下文件 进行数据库迁移时遇到的一些问题??...

    我目前有两个数据库: mysql5.6.x mysql5.7.x 现在要将mysql5.6.x 的所有数据 迁移到 mysql5.7.x 中,采取的是直接将 mysqldata 目录下的相关文件夹(数 ...

  2. mysql拷贝目录迁移方案_mysql 直接拷贝data 目录下文件 进行数据库迁移时遇到的一些问题??...

    我目前有两个数据库: mysql5.6.x mysql5.7.x 现在要将mysql5.6.x 的所有数据 迁移到 mysql5.7.x 中,采取的是直接将 mysqldata 目录下的相关文件夹(数 ...

  3. android加密技术框架,Android平台下文件透明加密技术的研究与实现

    摘要: 移动互联网的迅速发展使得手机应用不断丰富,智能手机的快速兴起为现代人们的生活带来了全新的体验.然而,人们在尽情享受这些全新体验的同时也在面临着日益突出的手机数据安全问题.目前,市场上已经出现了 ...

  4. php yii框架路由,yii框架如何配置路由

    首先要在服务器配置(httpd.conf)中开启重写模块:#开启重写模块,将其前面的#去掉 LoadModule rewrite_module modules/mod_rewrite.so #Dire ...

  5. php网站目录结构图,thinkPHP5.0站点目录结构-我心向阳

    一.ThinkPHP5.0的目录结构 安装后(或者下载后的压缩文件解压后)可以看到下面的目录结构: tp5 ├─application 应用目录 ├─extend 扩展类库目录(可定义) ├─publ ...

  6. python 实现结构树模式显示目录下文件

    在发布一个项目或者产品的时候,需要将项目内的文件打包上传,但是下载人员在下载前最好能看到文件包的内容,文件名字等,如果使用手动方式录入就太麻烦了,也容易出错,如果使用文本模式罗列的话看的还不是特别的清 ...

  7. 02. Yii 2.0 框架的目录结构

    1. 项目的目录结构 基础版: basic 目录下的各个文件夹: commands            控制台 config                    配置文件 console.php ...

  8. cansina 目录_一个高级web目录扫描工具,功能将会强于DirBuster、Dirsearch、cansina、御剑。...

    Dirmap 一个高级web目录扫描工具,功能将会强于DirBuster.Dirsearch.cansina.御剑 需求分析 经过大量调研,总结一个优秀的web目录扫描工具至少具备以下功能: 并发引擎 ...

  9. yii+php+当前目录,Yii应用的目录结构和入口脚本

    以下是一个通过高级模版安装后典型的Yii应用的目录结构: ~~~ . ├── backend ├── common ├── console ├── environments ├── frontend ...

最新文章

  1. django之Ajax
  2. 什么是移臂调度,什么是旋转调度?
  3. 学习笔记:UITabBarController使用详解
  4. ie9浏览器两个ajax请求同步不兼容_浏览器拦截问题
  5. vue 二维数组_最近研究Vue源码时我发现的一些好玩函数
  6. 安装java环境linux和windows
  7. C语言 数组排序 – 冒泡法排序 - C语言零基础入门教程
  8. 系统建模、分析、仿真和验证软件工具ModelCodoer
  9. 2013 年亚洲赛杭州赛区卡题总结
  10. eclipse打war包_jar包和war包的区别
  11. 【实战-Linux】--搭建CA认证中心实现https取证
  12. 【软件笔记------Orcad Capture CIS 17.2/pads vx2.7】------ orcadpads PCB设计简要教程
  13. python之urlencode(),quote()及unquote()
  14. OVERLAPPED结构体类型介绍及作用
  15. 【Python数据清洗】pivot_table 与 pivot 的区别——手把手系列
  16. 源码阅读技巧总结-Android
  17. 演讲稿丨史忠植:探寻大师足迹,一览马文•明斯基学术风采
  18. 华为与「DaoCloud 道客」推出面向元宇宙的云边协同超融合一体机
  19. MATLAB和c#混合编程实现心电图显示软件
  20. 新联邦业务数据湖为颠覆大数据应用铺路

热门文章

  1. 海报创意|十月的节日热点:国庆、重阳和万圣节
  2. Flash P2P 语音视频聊天示例
  3. UPS及联邦快递获牌照
  4. 华为云SparkRTC面向低时延、大通量传输业务的技术探索
  5. 【mmdetection系列】mmdetection之evaluate评测
  6. Ubuntu永久性修改ip地址
  7. 五款酷炫的开源克隆软件
  8. Python论坛列表
  9. web原理及应用期末考试基础题目及解答
  10. scratch教程 03