클래스 컬_멀티{
비공개 $url_list=array()
비공개 $curl_setopt=배열(
'CURLOPT_RETURNTRANSFER' => 1,//결과는 변수
에 반환됩니다.
'CURLOPT_HEADER' => 0,//HTTP 헤더를 반환해야 하는지 여부
'CURLOPT_NOBODY' => 0,//반환된 콘텐츠가 필수인지 여부
'CURLOPT_FOLLOWLOCATION' => 0,//자동 추적
'CURLOPT_TIMEOUT' => 6//타임아웃 시간(초)
);
함수 __construct($seconds=30){
set_time_limit($seconds);
}
/*
* URL 설정
* @list 배열
*/
공용 함수 setUrlList($list=array()){
$this->url_list=$list;
}
/*
* 매개변수 설정
* @cutPot 배열
*/
공개 함수 setOpt($cutPot){
$this->curl_setopt=$cutPot $this->curl_setopt
}
/*
* 실행
* @return 배열
*/
공개 함수 실행(){
$mh=curl_multi_init()
foreach($this->url_list as $i=>$url){
$conn[$i]=curl_init($url)
foreach($this->curl_setopt as $key => $val){
cur_setopt($conn[$i],preg_replace('/(CURLOPT_w{1,})/ie','$0',$key),$val)
~
curl_multi_add_handle($mh,$conn[$i])
~
$active=false;
하세요{
$mrc=curl_multi_exec($mh,$active)
}while($mrc == CURLM_CALL_MULTI_PERFORM)
while($active 및 $mrc == CURLM_OK){
If(curl_multi_select($mh) != -1){
~
$mrc=curl_multi_exec($mh,$active)
}while($mrc == CURLM_CALL_MULTI_PERFORM)
~
~
$res=array()
foreach($this->url_list as $i => $url){
$res[$i]=curl_multi_getcontent($conn[$i])
컬_닫기($conn[$i])
cur_multi_remove_handle($mh,$conn[$i]);//리소스 해제
~
컬_다중_닫기($mh)
$res 반환;
}
}
PHP는 다중 스레드 다운로드 클래스 예제를 사용하여 원격 이미지를 다운로드하며 코드는 다음과 같습니다.
$curl_mul=new curl_multi()
$curl_mul->setUrlList(array('http://www.jb51.net/img/logo.jpg','http://www.jb51.net/img/logo.jpg','http:// www.jb51.net/img/logo.jpg'))
$a=$curl_mul->실행()
$i=1;
foreach($a를 $v로){
$filename=$i.'.gif'
$fp2=@fopen($filename,'a')
fwrite($fp2,$v);
fclose($fp2);
$i ;
}
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.