setDebug(true); } //디렉토리 생성 $image->makeDirectory($image->getDestinationPath()); foreach ($image->getFilesByExtentionType($image->getSourcePath()) as $file) { $image->make_small_image($file); } log_message("notice", "Crawler->" . __FUNCTION__ . " 작업이 완료되었습니다."); return "완료되었습니다."; } catch (\Exception $e) { log_message("error", $e->getMessage()); return $e->getMessage(); } } public function crawling(...$params): string { try { $crawler = new MyCrawler(); if (in_array("debug", $params)) { $crawler->setDebug(true); } //1. 사이트 로그인 처리 $user = $crawler->login(); $crawler->getMyStorage()->setUser($user); $items = []; //2. 해당사이트 MainPage 처리 if ($crawler->getDebug()) { $items[] = [ 'title' => getenv("yamap.view.test.title"), 'nickname' => getenv("yamap.view.test.nickname"), 'detail_url' => getenv("yamap.view.test.url"), 'time' => date("Y-m-d H:i:s"), 'hit' => 1 ]; } else { $items = $crawler->mainPage(getenv("yamap.list.url")); } if (!count($items)) { throw new \Exception("Yamap 사이트에서 게시물이 존재하지 않습니다."); } //Limit가 0이면 $items 갯수만큼 다하고, LIMIT 갯수 혹은 $items의 갯수중 작은수만큼 한다. $max_limit = intval(getenv("yamap.list.max_limit")); if ($max_limit) { $max_limit = count($items) <= $max_limit ? count($items) : $max_limit; } else { $max_limit = count($items); } $i = 0; foreach ($items as $item) { if ($i <= $max_limit) { try { //3. DetailPage 처리 : bbs_view > div.contents 가진 객체를 찾아서 처리 $fileEntitys = $crawler->detailPage($item["detail_url"]); //4.망보드 일반게시판에 게시물 등록 처리 if (count($fileEntitys)) { $crawler->createBoard($item, $fileEntitys); } $i++; log_message("notice", "게시물 {$i}번째 {$item["nickname"]} 작업완료."); } catch (\Exception $e) { log_message("debug", $e->getMessage()); } } } log_message("notice", "Crawler->" . __FUNCTION__ . " 작업이 완료되었습니다."); return "완료되었습니다."; } catch (\Exception $e) { log_message("error", $e->getMessage()); return $e->getMessage(); } } }