この記事では、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 中国語 Web サイトをご覧ください。 !
関連する推奨事項:
以上がディレクトリ内のファイルをスキャンして、Yii フレームワークのデータベースに入力する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。