public function load_old_ranges() { Postcodify_Utility::print_message('구 우편번호 범위 데이터를 로딩하는 중...'); // DB를 준비한다. $db = Postcodify_Utility::get_db(); $db->beginTransaction(); $ps_insert = $db->prepare('INSERT INTO postcodify_ranges_oldcode (sido_ko, sido_en, sigungu_ko, sigungu_en, ' . 'ilbangu_ko, ilbangu_en, eupmyeon_ko, eupmyeon_en, dongri_ko, dongri_en, ' . 'range_start_major, range_start_minor, range_end_major, range_end_minor, is_mountain, ' . 'island_name, building_name, building_num_start, building_num_end, postcode6) ' . 'VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); // Zip 파일을 연다. $zip = new Postcodify_Parser_Ranges_OldCode(); $zip->open_archive($this->_data_dir . '/oldaddr_zipcode_DB.zip'); $zip->open_next_file(); // 카운터를 초기화한다. $count = 0; // 데이터를 한 줄씩 읽는다. while ($entry = $zip->read_line()) { // 불필요한 줄은 건너뛴다. if ($entry === true) { continue; } // 레코드를 저장한다. $ps_insert->execute(array($entry->sido, $entry->sido ? Postcodify_Utility::$english_cache[$entry->sido] : null, $entry->sigungu, $entry->sigungu ? Postcodify_Utility::$english_cache[$entry->sigungu] : null, $entry->ilbangu, $entry->ilbangu ? Postcodify_Utility::$english_cache[$entry->ilbangu] : null, $entry->eupmyeon, $entry->eupmyeon ? Postcodify_Utility::$english_cache[$entry->eupmyeon] : null, $entry->dongri, $entry->dongri ? Postcodify_Utility::$english_cache[Postcodify_Utility::get_canonical($entry->dongri)] : null, $entry->range_start_major, $entry->range_start_minor, $entry->range_end_major, $entry->range_end_minor, $entry->is_mountain, $entry->island_name, $entry->building_name, $entry->building_num_start, $entry->building_num_end, $entry->postcode6)); // 카운터를 표시한다. if (++$count % 512 === 0) { Postcodify_Utility::print_progress($count); } // 메모리 누수를 방지하기 위해 모든 배열을 unset한다. unset($entry); } // 압축 파일을 닫는다. $zip->close(); unset($zip); $db->commit(); unset($db); Postcodify_Utility::print_ok($count); }