Heim  >  Artikel  >  Backend-Entwicklung  >  So scannen Sie Dateien in einem Verzeichnis und geben sie in die Datenbank im Yii-Framework ein

So scannen Sie Dateien in einem Verzeichnis und geben sie in die Datenbank im Yii-Framework ein

不言
不言Original
2018-07-10 15:20:341808Durchsuche

Dieser Artikel stellt hauptsächlich die Methode zum Scannen von Dateien in einem Verzeichnis in der Datenbank im Yii-Framework vor. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.

Anforderungen :

Schreiben Sie eine geplante Aufgabe unter dem yii-Framework, scannen Sie die JSON-Datei in einem bestimmten Verzeichnis $target und importieren Sie sie in die angegebene Datenbank

Implementierung:

1. Geben Sie die erforderliche JSON-Datei der Bibliothek im angegebenen Verzeichnis $target
2 ein. Führen Sie die geplante Aufgabe aus und importieren Sie sie in die Mongo-Bibliothek

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

    }
}
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Yii kann die Ausnahmelösung nicht abfangen

Das obige ist der detaillierte Inhalt vonSo scannen Sie Dateien in einem Verzeichnis und geben sie in die Datenbank im Yii-Framework ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn