CI 묻고 답하기

제목 질문 있습니다! URL의 타이틀 값 따오기.
글쓴이 Lectom 작성시각 2012/01/02 19:46:26
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 22478   RSS
 하하.. 새해 복 많으 받으십시오.. (넙죽)

다름이 아니라, 

function fetch_body($url) {  //해당 URL이 유요한지 확인하고, 제목값을 가져오는 함수 url은 변수로 받음.
     if (!preg_match('~^https?://~i', $url))
     {
         trigger_error('Invalid URL given in ' . __FUNCTION__, E_USER_NOTICE);
         return false;
     }
      
     if (!$content = @file_get_contents($url))
     {      
         return false;
     }  
  if(mb_detect_encoding($content, 'EUC-KR', true) == 'EUC-KR')  // mb함수로 인코딩이 EUC-KR인지 확인하는 함수. 작동 안하면 => if(iconv('euc-kr', 'euc-kr', $str) == $str))  
  {
   // $content=iconv("euc-kr","utf-8//ignore",$content);
   $content=mb_convert_encoding($content,"UTF-8","EUC-KR");
  } 
  if (!preg_match('~<title>(.*?)</title>~si', $content, $title))
            {
         $result['title']=false;
     }
     return $result;
}
이렇게 제목값을 가져오는 함수를 만들어 쓰고 있었는데요.

동시에 100여개 페이지의 제목값을 가져와야 하는 일이 생겼습니다. 위의 코드를 쓰니 3분 이상이 걸리더라구요.. ㅠ.ㅠ

서버 증설등의 작업 없이, 좀 더 속도를 개선 시킬 수 있는 방법 없을까요? ㅜ.ㅜ

 다음글 코드 수행후 결과처리할때요 (2)
 이전글 RSS 라이브러리 사용중 에러가 나네요 ㅠㅠ (8)

댓글

변종원(웅파) / 2012/01/02 22:35:16 / 추천 0
정규표현식은 시간이 걸립니다. 첫번째 정규표현식을 다른 것으로 바꾸면 좀 줄어들것이구요.

그리고 타이틀만 필요한데 모든 컨텐츠를 가져와서 검색을 합니다.

컨텐츠도 10줄 정도만 가져오게 바꿔보세요
Lectom / 2012/01/03 01:32:12 / 추천 0
감사합니다 ^^;; 
그런데, 컨텐츠를 10줄 정도만 가지고 오려면 어떻게 해야 할까요? ㅠ.ㅠ

검색해 보니 file_get_contents 를 이용한 방식은 잘 안나오고, cURL을 사용하면 될듯 하긴 한데 말이죠;;

header('Content-Type: text/xml');
$curl = curl_init();
$timeout = 5; // 0으로 하면 시간제한이 없다.
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//
curl_setopt($curl, CURLOPT_BUFFERSIZE, ?);
//
curl_setopt($curl, CURLOPT_TIMEOUT,$timeout);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
Lectom / 2012/01/03 08:48:32 / 추천 0
 아항... file_get_contents에 옵션이 있군요 ^^;; 감사합니닷!!