资讯专栏INFORMATION COLUMN

yii框架,扫描目录下文件入数据库

BicycleWarrior / 2193人阅读

摘要:需求带框架下写一个定时任务,扫描某一目录下的文件,并导入指定的数据库中实现把需要入库的文件放在指定目录下执行定时任务导入到库中定时任务代码导入库到测试环境扫描的目录入库的数据库对象分析用户回答的信息并按格式入库读取目录下文件

需求:

带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

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

    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28729.html

相关文章

  • Yii2框架URL美化教程

    摘要:注意事项服务器中配置的虚拟域名必须直接指向入口文件所在目录,否则在省略的情况下,服务器无法正确访问到项目。 Yii2.0默认的访问形式为: http://www.xxx.com/index.php?r=post/index&id=100 一般我们都会考虑将其美化一下,变成如下的形式: http://www.xxx.com/post/100.html 接下来就是美化的步骤 一、配置htt...

    jk_v1 评论0 收藏0
  • php yii2框架在linux/mac环境的安装教程 2018年最新版

    摘要:一下载介绍下什么是是用来管理依赖关系的工具你可以在自己的项目中声明所依赖的工具库,会帮你安装这些依赖的库文件。 一、 下载Composer 1.介绍下什么是Composer? 是 PHP用来管理依赖关系的工具,你可以在自己的项目中声明所依赖的工具库,Composer会帮你安装这些依赖的库文件。避免重复造轮子 2.下载路径 官方地址 https://getcomposer.org/中文...

    kelvinlee 评论0 收藏0
  • Swagger PHP使用指南

    摘要:,已经好了,试着访问根目录下,比如试试,出现界面就成功了没从先就用命令看下的路由最上面条就是刚刚添加的路由。 先说什么是Swagger, Swagger的使用目的是方便优美的呈现出接口API的各种定义, 生成API文档, 包括参数, 路径之类. 有时后端改了API的参数或者其他设置, 前端直接看这个Swagger UI就可以, 方便项目管理和团队协作. 官网: http://swagg...

    cnio 评论0 收藏0
  • Yii2系列教程二:MVC Forms 和 Layouts

    摘要:而且很明显地,我们可以看到,一旦输入框在失去焦点的时候,如果里面没有输入任何内容,每个输入框就会有相应的错误提示,用户体验很不错。 原文来自: https://jellybool.com/post/programming-with-yii2-exploring-mvc-forms-a... 上一篇文章我们简单地实现了Yii2框架安装和Hello World,而在这一篇文章当中...

    ThreeWords 评论0 收藏0
  • YII2快速学习笔记

    摘要:高性能始终是的首要目标之一。版是上代的老版本,现在处于维护状态。版是一个完全重写的版本,采用了最新的技术和协议,包括依赖包管理器代码规范命名空间特质等等。所以,我们学习版本。启用本镜像服务系统全局配置即将配置信息添加到的全局配置文件中。 工作中需要用到YII框架,于是乎,系统的学习下这套框架,详细教程请看考该站完整系列:YII2教程 一、YII简介 1、什么是YII Yii 是一个高性...

    kbyyd24 评论0 收藏0

发表评论

0条评论

BicycleWarrior

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<