摘要:需求帶框架下寫一個(gè)定時(shí)任務(wù),掃描某一目錄下的文件,并導(dǎo)入指定的數(shù)據(jù)庫中實(shí)現(xiàn)把需要入庫的文件放在指定目錄下執(zhí)行定時(shí)任務(wù)導(dǎo)入到庫中定時(shí)任務(wù)代碼導(dǎo)入庫到測試環(huán)境掃描的目錄入庫的數(shù)據(jù)庫對(duì)象分析用戶回答的信息并按格式入庫讀取目錄下文件
需求:
帶yii框架下寫一個(gè)定時(shí)任務(wù),掃描某一目錄$target下的json文件,并導(dǎo)入指定的數(shù)據(jù)庫中
實(shí)現(xiàn):1.把需要入庫的json文件放在指定目錄$target下
2.執(zhí)行定時(shí)任務(wù),導(dǎo)入到mongo庫Vote_teacher中
/opt/modules/php/bin/php /www/web/protected/yiic.php import VoteTeacher
3.定時(shí)任務(wù)代碼:
/web/protected/commandsImportCommand.php
/tmp/abc1.txt */ class ImportCommand extends CConsoleCommand { public $target="/www/web/html/import/"; //掃描的目錄 public $model; //入庫的數(shù)據(jù)庫對(duì)象 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 //進(jìn)行處理 } $arr=json_decode($content); if(empty($arr)){ $this->showMessage("no data to import"); die(); } //實(shí)例化不同數(shù)據(jù)庫 $tag=true; foreach ($arr as $key => $val) { //存儲(chǔ) $aVal = (array)$val; $model = new $this->model; if($model instanceof SMongodb){//動(dòng)態(tài)字段存儲(chǔ) foreach ($aVal as $k => $v) { $model->$k=$v; } }else{//非動(dòng)態(tài)字段存儲(chǔ) $model->attributes=$aVal; } if(!$model->save()){ $tag=false; }else{ unset($model); //銷毀一個(gè)對(duì)象,再次使用的時(shí)候會(huì)new一個(gè)新的 } } } 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 . " "; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28729.html
摘要:注意事項(xiàng)服務(wù)器中配置的虛擬域名必須直接指向入口文件所在目錄,否則在省略的情況下,服務(wù)器無法正確訪問到項(xiàng)目。 Yii2.0默認(rèn)的訪問形式為: http://www.xxx.com/index.php?r=post/index&id=100 一般我們都會(huì)考慮將其美化一下,變成如下的形式: http://www.xxx.com/post/100.html 接下來就是美化的步驟 一、配置htt...
摘要:一下載介紹下什么是是用來管理依賴關(guān)系的工具你可以在自己的項(xiàng)目中聲明所依賴的工具庫,會(huì)幫你安裝這些依賴的庫文件。 一、 下載Composer 1.介紹下什么是Composer? 是 PHP用來管理依賴關(guān)系的工具,你可以在自己的項(xiàng)目中聲明所依賴的工具庫,Composer會(huì)幫你安裝這些依賴的庫文件。避免重復(fù)造輪子 2.下載路徑 官方地址 https://getcomposer.org/中文...
摘要:,已經(jīng)好了,試著訪問根目錄下,比如試試,出現(xiàn)界面就成功了沒從先就用命令看下的路由最上面條就是剛剛添加的路由。 先說什么是Swagger, Swagger的使用目的是方便優(yōu)美的呈現(xiàn)出接口API的各種定義, 生成API文檔, 包括參數(shù), 路徑之類. 有時(shí)后端改了API的參數(shù)或者其他設(shè)置, 前端直接看這個(gè)Swagger UI就可以, 方便項(xiàng)目管理和團(tuán)隊(duì)協(xié)作. 官網(wǎng): http://swagg...
摘要:而且很明顯地,我們可以看到,一旦輸入框在失去焦點(diǎn)的時(shí)候,如果里面沒有輸入任何內(nèi)容,每個(gè)輸入框就會(huì)有相應(yīng)的錯(cuò)誤提示,用戶體驗(yàn)很不錯(cuò)。 原文來自: https://jellybool.com/post/programming-with-yii2-exploring-mvc-forms-a... 上一篇文章我們簡單地實(shí)現(xiàn)了Yii2框架安裝和Hello World,而在這一篇文章當(dāng)中...
摘要:高性能始終是的首要目標(biāo)之一。版是上代的老版本,現(xiàn)在處于維護(hù)狀態(tài)。版是一個(gè)完全重寫的版本,采用了最新的技術(shù)和協(xié)議,包括依賴包管理器代碼規(guī)范命名空間特質(zhì)等等。所以,我們學(xué)習(xí)版本。啟用本鏡像服務(wù)系統(tǒng)全局配置即將配置信息添加到的全局配置文件中。 工作中需要用到Y(jié)II框架,于是乎,系統(tǒng)的學(xué)習(xí)下這套框架,詳細(xì)教程請(qǐng)看考該站完整系列:YII2教程 一、YII簡介 1、什么是YII Yii 是一個(gè)高性...
閱讀 1881·2021-09-28 09:36
閱讀 2431·2021-09-08 09:35
閱讀 3071·2019-08-30 15:53
閱讀 1559·2019-08-30 14:08
閱讀 670·2019-08-29 18:40
閱讀 2847·2019-08-29 13:57
閱讀 2709·2019-08-29 13:55
閱讀 688·2019-08-26 13:45