PHP 언어 자체가 멀티스레딩을 지원하지 않는다는 점으로 인해 크롤러 프로그램 개발의 효율성은 높지 않습니다. 이때 여러 항목에 대한 동시 멀티스레딩 액세스를 달성할 수 있는 Curl Multi Functions를 사용해야 하는 경우가 많습니다. URL 주소. Curl Multi Function은 매우 강력하므로 Curl Multi Functions를 사용하여 동시 멀티스레드 파일 다운로드를 작성할 수 있습니까? 물론 가능합니다. 내 코드는 다음과 같습니다.
코드 1: 얻은 코드를 파일에 직접 작성
코드 복사 코드는 다음과 같습니다.
$urls = array(
'http ://www.sina.com.cn/',
'http://www.sohu.com/',
'http://www.163.com/'
) / / 요구사항 가져온 페이지 URL 설정
$save_to='/test.txt'; // 가져온 코드를 파일에 작성합니다.
$st = fopen($save_to,"a")
$mh = curl_multi_init();
foreach($urls as $i => $url) {
$conn[$i] = curl_init($url)
curl_setopt($conn[$i], CURLOPT_USERAGENT , "Mozilla/4.0(호환; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_HEADER ,0)
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT, 60 );
curl_setopt($conn[$i], CURLOPT_FILE,$st); // 크롤링된 코드를 파일에 기록하도록 설정
curl_multi_add_handle($mh,$conn[$i]); >} // 초기화
do {
curl_multi_exec($mh,$active)
} while ($active) // 실행
foreach ($urls as $i => $url ) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i])
} // 청소 종료
curl_multi_close($mh); >fclose($st);
?>
코드 2: 얻은 코드를 먼저 변수에 넣은 후 파일에 씁니다
코드 복사 코드는 다음과 같습니다.
$urls = array(