Browse Source

Merge pull request #1702 from visuddhinanda/agile

add update in tulip
visuddhinanda 2 years ago
parent
commit
2ddf5b64bb
4 changed files with 126 additions and 8 deletions
  1. 30 8
      rpc/tulip/tulip/dict_maker.php
  2. 27 0
      rpc/tulip/tulip/dict_update.php
  3. 17 0
      rpc/tulip/tulip/logger.php
  4. 52 0
      rpc/tulip/tulip/pdo.php

+ 30 - 8
rpc/tulip/tulip/dict_maker.php

@@ -1,8 +1,10 @@
 <?php
 require dirname(__FILE__) . '/vendor/autoload.php';
 require dirname(__FILE__) . '/config.php';
+require dirname(__FILE__) . '/logger.php';
 
-$dir = dirname(__FILE__) . '/storage';
+
+$dir = dirname(__FILE__) . '/storage/dict';
 if(!is_dir($dir)){
     $res = mkdir($dir,0700,true);
     if(!$res){
@@ -10,40 +12,60 @@ if(!is_dir($dir)){
         return 0;
     }
 }
+
+//删除目录下所有文件
+logger('debug','delete all of file');
+$files = scandir($dir);
+foreach ($files as $key => $file) {
+    if(is_file($dir.'/'.$file)){
+        unlink($dir.'/'.$file);
+    }
+}
+
+$stopFile = $dir.'/.stop';
+$stop = file_put_contents ($stopFile,'stop');
+if($stop === false){
+    logger('error',"create stop file fail ");
+    return 0;
+}
+
 $filename = $dir.'/pali-'.date("Y-m-d-h-i-sa").'.syn';
 $fp = fopen($filename,'a');
 if(!$fp){
-    echo "open file fail filename=".$filename;
+    logger('error',"open file fail filename=".$filename);
     return 0;
 }
 $client = new GuzzleHttp\Client();
 $currPage = 1;
 
     $urlBase = Config['api_server'] . '/v2/pg-pali-dict-download';
-    echo $urlBase.PHP_EOL;
+    logger('debug','url='.$urlBase);
     do {
         $goNext = false;
         $url = $urlBase . "?page={$currPage}";
-        echo $url.PHP_EOL;
+        logger('debug','url='.$url);
         $res = $client->request('GET', $url);
         $status = $res->getStatusCode();
         if($status === 200){
             $json = json_decode($res->getBody());
             if($json->ok){
                 $content = $json->data;
-                echo strlen($content).PHP_EOL;
+                logger('debug','data size='.strlen($content));
                 fwrite($fp,$content."\n");
+                logger('debug','write to file success');
                 $goNext = true;
             }else{
-                echo 'all done';
+                logger('debug', 'all done');
             }
         }else{
-            echo 'error:'.$status;
+            logger('error', 'status='.$status);
         }
         $currPage++;
+        sleep(1);
     } while ($goNext);
     
 fclose($fp);
-echo 'all done filename='.$filename;
+logger('debug','all done filename='.$filename) ;
 
+unlink($stopFile);
 

+ 27 - 0
rpc/tulip/tulip/dict_update.php

@@ -0,0 +1,27 @@
+<?php
+
+require dirname(__FILE__) . '/vendor/autoload.php';
+require dirname(__FILE__) . '/config.php';
+require dirname(__FILE__) . '/pdo.php';
+require dirname(__FILE__) . '/logger.php';
+
+
+$PDO = new PdoHelper;
+
+$PDO->connectDb();
+
+$query = "UPDATE fts_texts SET content = content,
+bold_single = bold_single,
+bold_double = bold_double,
+bold_multiple = bold_multiple
+WHERE book = ?;";
+
+for ($i=1; $i < 218; $i++) { 
+    $ok = $PDO->execute($query,[$i]);
+    if($ok){
+        logger('debug','book: '.$i. ' updated.');
+    }else{
+        logger('error','error book: '.$i. ' update fail.');
+    }
+}
+logger('debug','all done');

+ 17 - 0
rpc/tulip/tulip/logger.php

@@ -0,0 +1,17 @@
+<?php
+
+function logger($level,$message){
+    $output = "[\033[32m".date("Y/m/d h:i:sa") ."\033[0m] ";
+    if($level === 'error'){
+        $output .= "\033[41m" . $level . "\033[0m ";
+    }else{
+        $output .= $level;
+    }
+    
+    $output .= ' ' . $message.PHP_EOL;
+    if($level === 'error'){
+        fwrite(STDERR,$output);
+    }else{
+        fwrite(STDOUT,$output);
+    }
+}

+ 52 - 0
rpc/tulip/tulip/pdo.php

@@ -0,0 +1,52 @@
+<?php
+
+class PdoHelper {
+    private $_pdo = null;
+    public function connectDb(){
+        /**
+         * 连接数据库
+         */
+        $db = Config['database']['driver'];
+        $db .= ":host=".Config['database']['host'];
+        $db .= ";port=".Config['database']['port'];
+        $db .= ";dbname=".Config['database']['name'];
+        $db .= ";user=".Config['database']['user'];
+        $db .= ";password=".Config['database']['password'].";";
+        echo 'connect to db host='.Config['database']['host'] . ' name='.Config['database']['name'].PHP_EOL;
+        try {
+            $PDO = new PDO($db,
+                        Config['database']['user'],
+                        Config['database']['password'],
+                        array(PDO::ATTR_PERSISTENT=>true));
+        }catch(PDOException $e) {
+            echo 'connect to db fail'.PHP_EOL;
+            print $e->getMessage();
+            return false;
+        }
+        $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+        $this->_pdo = $PDO;
+    }
+    public function dbSelect($query, $params=null)
+    {
+        if($this->_pdo === null){
+            return false;
+        }
+        if (isset($params)) {
+            $stmt = $this->_pdo->prepare($query);
+            $stmt->execute($params);
+        } else {
+            $stmt = $this->_pdo->query($query);
+        }
+        return $stmt->fetchAll(PDO::FETCH_ASSOC);
+    }
+    public function execute($query, $params=null)
+    {
+        if (isset($params)) {
+            $stmt = $this->_pdo->prepare($query);
+            $stmt->execute($params);
+            return $stmt;
+        } else {
+            return $this->_pdo->query($query);
+        }
+    }
+}