PHP 에서 curl멀 티 병발 의 실현
3346 단어 PHPcurl multi병발 하 다
curl 일반 요청
$startTime = microtime(true);
$chArr = [];
$optArr = [
CURLOPT_URL => 'http://www.httpbin.org/ip',
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
];
$result = [];
// curl
for ($i=0; $i<10; $i++) {
$chArr[$i] = curl_init();
curl_setopt_array($chArr[$i], $optArr);
$result[$i] = curl_exec($chArr[$i]);
curl_close($chArr[$i]);
}
$endTime = microtime(true);
echo sprintf("use time: %.3f s".PHP_EOL, $endTime - $startTime);
use time: 6.080 scurl_멀 티 병렬 요청
$startTime = microtime(true);
$chArr = [];
$optArr = [
CURLOPT_URL => 'http://www.httpbin.org/ip',
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
];
$result = [];
// curl
for ($i=0; $i<10; $i++) {
$chArr[$i] = curl_init();
curl_setopt_array($chArr[$i], $optArr);
}
// curl
$mh = curl_multi_init();
// curl curl
foreach ($chArr as $ch) {
curl_multi_add_handle($mh, $ch);
}
//
$active = null;
/**
* $mh $ch , $mh $active,
* CURLM_CALL_MULTI_PERFORM , , ,
* $ch , CURLM_OK , , 。
*/
do {
//
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
/**
* , $active > 0 while , :
* do {
* $mrc = curl_multi_exec($mh, $active);
* } while ($active > 0);
* , curl_multi_exec , CPU ,
* , curl_multi_select 。
*/
/**
* $active true , $mh $ch ,
* $mrc == CURLM_OK, $ch 。
*/
while ($active && $mrc == CURLM_OK) {
/**
* , ( $mh $ch ),
* $mh $ch ($mrc == CURLM_OK) ,
* $mh curl_multi_exec , CPU 。
*/
if (curl_multi_select($mh) != -1) {
// $ch
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
foreach ($chArr as $i=>$ch) {
// curl
$result[$i] = curl_multi_getcontent($ch);
//
curl_multi_remove_handle($mh, $ch);
}
// curl
curl_multi_close($mh);
$endTime = microtime(true);
echo sprintf("use time: %.3f s".PHP_EOL, $endTime - $startTime);
use time: 0.599 s위 프로그램의 실행 시간 을 비교 해 보면 curl 을 사용 합 니 다.multi 시리즈 함수 병행 요청 은 일반 curl 함수 보다 순서대로 요청 효율 이 높 습 니 다.
PHP 에서 curl 에 대한 자세 한 설명 입 니 다.multi 병발 의 실현 에 관 한 글 은 여기까지 입 니 다.더 많은 관련 PHP curlmulti 동시 다발 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.