Example #1
0
 /**
  * @param null|callable $func
  * @param bool $has_extra
  * @throws \Exception
  */
 public static function initDivision(callable $func = null, $has_extra = false)
 {
     if (self::$db === null) {
         self::initDatabase(null);
     }
     if (!self::$db->tableExists(self::DIVISION)) {
         self::$db->createDivisionsTable(self::DIVISION);
     }
     if ($func == null) {
         $func = function () {
         };
     }
     if (self::$db->count(self::DIVISION) == 0) {
         $divisions = (require 'divisions_zh_CN.php');
         if ($has_extra) {
             $divisions = array_merge($divisions, require 'divisions_extra_zh_CN.php');
         }
         $data = [];
         $size = self::$db->size(self::DIVISION);
         $func(0, count($divisions));
         $time = Query::time();
         foreach ($divisions as $n => $d) {
             if ($time < Query::time()) {
                 $func(1, $n);
                 $time = Query::time();
             }
             $data[] = $d;
             if (count($data) >= $size) {
                 self::$db->insertDivisions(self::DIVISION, $data);
                 $data = [];
             }
         }
         if (count($data) > 0) {
             self::$db->insertDivisions(self::DIVISION, $data);
         }
         $func(2, 0);
     }
 }