PHP 함수 소개—curl_multi_exec(): 여러 핸들을 사용하여 cURL 세션 실행
cURL은 PHP의 네트워크 통신을 위한 강력한 오픈 소스 라이브러리입니다. HTTP, HTTPS, FTP 등과 같은 다양한 프로토콜을 지원하고 다양한 기능이 풍부한 옵션을 제공하므로 쉽게 요청을 보내고 응답을 받을 수 있습니다.
많은 경우 여러 URL 요청을 동시에 처리해야 하는 경우 curl_multi_exec()
함수를 사용해야 합니다. 이 기능을 사용하면 여러 cURL 핸들을 동시에 실행할 수 있으므로 요청 효율성이 향상됩니다. 이 글에서는 curl_multi_exec()
함수의 사용법을 자세히 소개하고 해당 코드 예제를 제공합니다. curl_multi_exec()
函数。该函数允许我们同时执行多个cURL句柄,从而提高请求的效率。本文将为大家详细介绍curl_multi_exec()
函数的使用方法,并提供相应的代码示例。
int curl_multi_exec(resource $multi_handle, int &$still_running)
$multi_handle
:cURL的多个句柄的资源,通过curl_multi_init()
函数创建。$still_running
:一个变量,用于存储仍在运行的句柄数量。如果出现错误,curl_multi_exec()
函数将返回一个错误码;否则,将返回0表示成功。
以下是一个使用curl_multi_exec()
函数并发发送多个请求的示例代码:
<?php // 创建cURL多个句柄 $multi_handle = curl_multi_init(); // 创建多个cURL会话并添加到多句柄中 $handles = array(); $handles[] = create_curl_handle("https://example.com/api1"); $handles[] = create_curl_handle("https://example.com/api2"); $handles[] = create_curl_handle("https://example.com/api3"); foreach ($handles as $handle) { curl_multi_add_handle($multi_handle, $handle); } // 执行多个cURL会话 $running = null; do { curl_multi_exec($multi_handle, $running); curl_multi_select($multi_handle); // 等待I/O事件 } while ($running > 0); // 获取每个请求的响应 foreach ($handles as $handle) { $response = curl_multi_getcontent($handle); // 处理响应数据 echo $response; // 关闭cURL会话 curl_multi_remove_handle($multi_handle, $handle); curl_close($handle); } // 关闭多个句柄 curl_multi_close($multi_handle); // 创建一个cURL会话,并设置选项 function create_curl_handle($url) { $handle = curl_init(); curl_setopt($handle, CURLOPT_URL, $url); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); return $handle; } ?>
上述代码首先创建了一个cURL多句柄资源,并通过循环创建了多个cURL会话。接下来,将这些会话添加到多句柄中,并执行多个cURL会话。在每次执行时,调用curl_multi_select()
函数等待I/O事件。最后,通过curl_multi_getcontent()
函数获取每个请求的响应,并进行相应处理。
curl_multi_exec()
函数之前,一定要先调用curl_multi_add_handle()
将每个会话添加到多句柄中。curl_multi_getcontent()
函数获取响应数据之前,一定要确保请求已完成,即运行中的句柄数为0。curl_multi_remove_handle()
函数从多句柄中移除会话,并使用curl_close()
关闭会话。curl_multi_exec()
int cur_multi_exec(resource $multi_handle, int &$still_running)
🎜🎜3. 매개변수 설명🎜$multi_handle
여러 cURL 핸들의 리소스는 curl_multi_init()
함수를 통해 생성됩니다. $still_running
: 아직 실행 중인 핸들 수를 저장하는 데 사용되는 변수입니다. curl_multi_exec()
함수는 오류 코드를 반환하고, 그렇지 않으면 성공을 나타내기 위해 0을 반환합니다. 🎜🎜5. 샘플 코드🎜🎜다음은 curl_multi_exec()
함수를 사용하여 여러 요청을 동시에 보내는 샘플 코드입니다. 🎜rrreee🎜위 코드는 먼저 cURL 다중 핸들 리소스를 생성하고 루프 다중 cURL 세션을 통해 수행됩니다. 다음으로 이러한 세션을 다중 핸들에 추가하고 여러 cURL 세션을 실행합니다. 각 실행 중에 curl_multi_select()
함수가 호출되어 I/O 이벤트를 기다립니다. 마지막으로 curl_multi_getcontent()
함수를 통해 각 요청의 응답을 얻어 그에 따라 처리합니다. 🎜🎜6. 참고🎜curl_multi_exec()
함수를 사용하기 전에 curl_multi_add_handle()
을 호출하여 각 세션을 다중 핸들에 추가하세요. 가운데. curl_multi_getcontent()
함수를 사용하기 전에 요청이 완료되었는지, 즉 실행 중인 핸들 수가 0인지 확인하세요. curl_multi_remove_handle()
함수를 사용하고, 세션을 닫으려면 curl_close()
를 사용하세요. curl_multi_exec()
함수는 여러 cURL 세션을 동시에 실행하여 요청 효율성을 높일 수 있는 매우 유용한 함수입니다. 위의 코드 예제를 통해 이 함수를 사용하여 여러 요청을 동시에 보내고 각 요청에 대한 응답 데이터를 얻는 방법을 이해할 수 있습니다. 실제 개발에서는 필요에 따라 이 샘플 코드를 더욱 최적화하고 확장할 수 있습니다. 🎜위 내용은 의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!