이 기사에서는 PHP에서 멀티스레딩을 구현하기 위해 컬과 결합한 방법을 주로 소개합니다. 컬 루프 호출과 결합된 foreach 문의 원리와 구현 기술을 분석하여 도움이 필요한 친구들이 예제 형식으로 사용할 수 있도록 합니다. 참고하세요
멀티스레딩은 PHP입니다. 지원하지 않지만 foreach를 사용하여 의사멀티스레딩을 할 수는 있지만 이 의사멀티스레딩의 속도가 반드시 싱글스레드보다 빠르지는 않습니다.
foreach 문을 사용하여 이미지 URL을 반복하는데, CURL을 사용하여 모든 사진을 로컬에 저장할 때 하나만 수집할 수 있는 문제가 있습니다. 이제 결합 방법을 요약하겠습니다. foreach 및 CURL을 사용하여 여러 URL 요청을 합니다.
방법 1: 루프 요청
$sr=array(url_1,url_2,url_3); foreach ($sr as $k=>$v) { $curlPost=$v.'?f=传入参数'; $ch = curl_init($curlPost) ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回 $data = curl_exec($ch) ; echo $k.'##:'.$data.'<br>'; } curl_close($ch);
위 코드에서 특히 주의해야 할 점은 컬_close가 foreach 루프의 끝 외부에 배치되어야 한다는 것입니다. 그 안에는 위에서 언급한 것처럼 여러 개의 IMGURL이 있으며 하나의 URL만 수집할 수 있습니다.
방법 2: 다중 스레드 루프
<?php multi_threads_request($nodes){ $mh = curl_multi_init(); $curl_array = array(); foreach($nodes as $i => $url) { $curl_array[$i] = curl_init($url); curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true); curl_multi_add_handle($mh, $curl_array[$i]); } $running = NULL; do { usleep(10000); curl_multi_exec($mh,$running); } while($running > 0); $res = array(); foreach($nodes as $i => $url) { $res[$url] = curl_multi_getcontent($curl_array[$i]); } foreach($nodes as $i => $url){ curl_multi_remove_handle($mh, $curl_array[$i]); } curl_multi_close($mh); return $res; } print_r(multi_threads_request(array( 'http://www.jb51.net', 'http://tools.jb51.net', ));
여기서는 주로 여러 개의 URL을 구현하기 위해 curl_multi_init()를 사용합니다. 그러나 PHP 자체는 멀티스레딩을 지원하지 않기 때문에 의사 멀티스레딩 속도가 반드시 단일 스레드보다 빠르지는 않습니다.
요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되길 바랍니다.
관련 권장 사항:
php서버 측 파일을 읽고 웹 페이지 인스턴스에 표시합니다.
php를 사용하여 서버 및 웹 프런트 엔드 인터페이스와 상호 작용
php를 사용하여 일주일 내에 저장 메커니즘에 자동으로 로그인
을 구현하세요.
위 내용은 PHP에서 멀티스레딩을 달성하기 위해 컬과 결합된 foreach의 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!