在yii框架中扫描目录下文件入数据库的方法

在yii框架中扫描目录下文件入数据库的方法

内容导读

收集整理的这篇技术教程文章主要介绍了在yii框架中扫描目录下文件入数据库的方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2357字,纯文字阅读大概需要4分钟

内容图文

这篇文章主要介绍了关于在yii框架中扫描目录下文件入数据库的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

需求:

带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

<?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无法捕获到异常的解决方法

以上就是在yii框架中扫描目录下文件入数据库的方法的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的在yii框架中扫描目录下文件入数据库的方法全部内容,希望文章能够帮你解决在yii框架中扫描目录下文件入数据库的方法所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com