prepare($query); $sth->execute(); $udict = new PDO("" . _FILE_DB_USER_DICT_, "", "", array(PDO::ATTR_PERSISTENT => true)); $udict->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); /* 开始一个事务,关闭自动提交 */ $udict->beginTransaction(); $query = "INSERT INTO udict ('userid', 'pali', 'book', 'paragraph', 'wid', 'type', 'data', 'confidence', 'lang', 'modify_time') VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? , ? )"; $stmt = $udict->prepare($query); $i = 0; while ($result = $sth->fetch(PDO::FETCH_ASSOC)) { try { $xmlString = "" . $result["data"] . ""; //echo $xmlString."
"; $xmlWord = simplexml_load_string($xmlString); $wordsList = $xmlWord->xpath('//word'); foreach ($wordsList as $word) { $pali = $word->real->__toString(); foreach ($word as $key => $value) { $strValue = $value->__toString(); if ($strValue !== "?" && $strValue !== "" && $strValue !== ".ctl." && $strValue !== ".a." && $strValue !== " " && mb_substr($strValue, 0, 3, "UTF-8") !== "[a]" && $strValue !== "_un_auto_factormean_" && $strValue !== "_un_auto_mean_") { $iType = 0; $lang = 'pali'; switch ($key) { case 'type': $iType = 1; break; case 'gramma': $iType = 2; break; case 'mean': $iType = 3; $lang = getLanguageCode($strValue); break; case 'org': $iType = 4; break; case 'om': $iType = 5; $lang = getLanguageCode($strValue); break; case 'parent': $iType = 6; break; } if ($iType > 0) { $wordData = array($result["creator_uid"], $pali, $result["book_id"], $result["paragraph"], $result["wid"], $iType, $strValue, 100, $lang, $result["modify_time"], ); //print_r($wordData); $stmt->execute($wordData); } } } } } catch (Throwable $e) { echo "Captured Throwable: " . $e->getMessage(); } $i++; if ($i > 10) { //break; } } //其他字典 $db_file_list = array(); array_push($db_file_list, _DIR_DICT_SYSTEM_ . "/sys_regular.db"); array_push($db_file_list, _DIR_DICT_SYSTEM_ . "/sys_irregular.db"); array_push($db_file_list, _DIR_DICT_SYSTEM_ . "/union.db"); array_push($db_file_list, _DIR_DICT_SYSTEM_ . "/comp.db"); array_push($db_file_list, _DIR_DICT_3RD_ . "/pm.db"); array_push($db_file_list, _DIR_DICT_3RD_ . "/bhmf.db"); array_push($db_file_list, _DIR_DICT_3RD_ . "/shuihan.db"); array_push($db_file_list, _DIR_DICT_3RD_ . "/concise.db"); array_push($db_file_list, _DIR_DICT_3RD_ . "/uhan_en.db"); foreach ($db_file_list as $db_file) { if ($debug) { echo "dict connect:$db_file
"; } $dbh = new PDO("" . $db_file, "", "", array(PDO::ATTR_PERSISTENT => true)); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); $query = "select * from dict where 1"; $sth = $dbh->prepare($query); $sth->execute(); $i = 0; while ($result = $sth->fetch(PDO::FETCH_ASSOC)) { if (!empty($result["mean"])) { $arrMean = explode('$', $result["mean"]); foreach ($arrMean as $key => $value) { $word = trim($value, " \t\n\r\0\x0B\."); if (!empty($word)) { $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 3, $word, $result["confidence"], $result["lang"], 1, ); //print_r($wordData); $stmt->execute($wordData); } } } if (!empty($result["type"])) { $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 1, $result["type"], $result["confidence"], 'pali', 1, ); $stmt->execute($wordData); //print_r($wordData); } if (!empty($result["gramma"])) { $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 2, $result["gramma"], $result["confidence"], 'pali', 1, ); $stmt->execute($wordData); //print_r($wordData); } if (!empty($result["parts"])) { $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 4, $result["parts"], $result["confidence"], 'pali', 1, ); //print_r($wordData); $stmt->execute($wordData); } if (!empty($result["partmean"])) { $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 5, $result["partmean"], $result["confidence"], $result["lang"], 1, ); //print_r($wordData); $stmt->execute($wordData); } if (!empty($result["parent"])) { $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 6, $result["parent"], $result["confidence"], 'pali', 1, ); //print_r($wordData); $stmt->execute($wordData); } if ($i > 10) { //break; } $i++; } } /* 提交更改 */ $udict->commit(); if (!$stmt || ($stmt && $stmt->errorCode() != 0)) { $error = $udict->errorInfo(); echo "error - $error[2]
"; } else { echo "updata index $i recorders."; }