<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Curl_multi_request</id>
	<title>Curl multi request - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Curl_multi_request"/>
	<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Curl_multi_request&amp;action=history"/>
	<updated>2026-05-18T09:05:16Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=Curl_multi_request&amp;diff=323&amp;oldid=prev</id>
		<title>Devcafe: 새 문서: curl은 커맨드라인에서 HTTP 요청을 보내는데 사용되는 유용한 도구 중 하나입니다. curl을 사용하여 여러 개의 HTTP 요청을 병렬로 보내고 처리하는 방법은 curl의 multi 인터페이스를 사용하는 것입니다. multi 인터페이스는 비동기적으로 여러 개의 curl 핸들을 처리하므로 여러 개의 요청을 동시에 처리할 수 있습니다.  다음은 curl multi request를 보내고 처리하는 방법의 예...</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Curl_multi_request&amp;diff=323&amp;oldid=prev"/>
		<updated>2024-10-14T16:17:02Z</updated>

		<summary type="html">&lt;p&gt;새 문서: curl은 커맨드라인에서 HTTP 요청을 보내는데 사용되는 유용한 도구 중 하나입니다. curl을 사용하여 여러 개의 HTTP 요청을 병렬로 보내고 처리하는 방법은 curl의 multi 인터페이스를 사용하는 것입니다. multi 인터페이스는 비동기적으로 여러 개의 curl 핸들을 처리하므로 여러 개의 요청을 동시에 처리할 수 있습니다.  다음은 curl multi request를 보내고 처리하는 방법의 예...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;curl은 커맨드라인에서 HTTP 요청을 보내는데 사용되는 유용한 도구 중 하나입니다. curl을 사용하여 여러 개의 HTTP 요청을 병렬로 보내고 처리하는 방법은 curl의 multi 인터페이스를 사용하는 것입니다. multi 인터페이스는 비동기적으로 여러 개의 curl 핸들을 처리하므로 여러 개의 요청을 동시에 처리할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
다음은 curl multi request를 보내고 처리하는 방법의 예시입니다. 이 예제에서는 Google과 Github에서 각각 한 개씩의 웹 페이지를 다운로드합니다.&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
Copy code&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# curl multi request 보내기&lt;br /&gt;
curl --silent --output /dev/null --fail http://www.google.com &amp;amp;&lt;br /&gt;
curl --silent --output /dev/null --fail http://www.github.com &amp;amp;&lt;br /&gt;
&lt;br /&gt;
# 모든 curl 핸들을 처리하고 결과 출력&lt;br /&gt;
wait&lt;br /&gt;
echo &amp;quot;All requests completed&amp;quot;&lt;br /&gt;
위 예제에서는 --silent 옵션을 사용하여 curl의 출력을 숨깁니다. --output /dev/null 옵션은 curl의 출력을 /dev/null로 리다이렉트합니다. --fail 옵션은 curl이 서버에서 HTTP 오류 코드를 반환할 때 실패를 반환하도록 지시합니다.&lt;br /&gt;
&lt;br /&gt;
또한, &amp;amp;를 사용하여 각각의 curl 명령어를 백그라운드에서 실행시키고, wait 명령어로 모든 백그라운드 프로세스가 완료될 때까지 대기합니다. 그리고 마지막으로 &amp;quot;All requests completed&amp;quot; 메시지를 출력합니다.&lt;br /&gt;
&lt;br /&gt;
이와 같이 multi 인터페이스를 사용하여 curl 명령어를 병렬로 실행할 수 있습니다. 또한, curl_multi_add_handle() 함수를 사용하여 다른 curl 핸들을 추가하고, curl_multi_perform() 함수를 사용하여 모든 핸들을 실행할 수 있습니다. 자세한 내용은 curl 공식 문서를 참조하시기 바랍니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
chiyoung kim&lt;br /&gt;
curl_multi_add_handle() 사용법&lt;br /&gt;
&lt;br /&gt;
curl_multi_add_handle() 함수는 multi 인터페이스를 사용하여 병렬로 실행할 curl 핸들을 추가하는 데 사용됩니다. 이 함수는 CURLMcode 타입의 반환값을 가지며, 핸들 추가가 성공하면 CURLM_OK가 반환됩니다.&lt;br /&gt;
&lt;br /&gt;
다음은 curl_multi_add_handle() 함수를 사용하여 curl 핸들을 추가하는 예시입니다.&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
Copy code&lt;br /&gt;
CURL *easy_handle1, *easy_handle2;&lt;br /&gt;
CURLM *multi_handle;&lt;br /&gt;
CURLMcode res;&lt;br /&gt;
&lt;br /&gt;
easy_handle1 = curl_easy_init();&lt;br /&gt;
curl_easy_setopt(easy_handle1, CURLOPT_URL, &amp;quot;http://example.com&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
easy_handle2 = curl_easy_init();&lt;br /&gt;
curl_easy_setopt(easy_handle2, CURLOPT_URL, &amp;quot;http://example.net&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
multi_handle = curl_multi_init();&lt;br /&gt;
curl_multi_add_handle(multi_handle, easy_handle1);&lt;br /&gt;
curl_multi_add_handle(multi_handle, easy_handle2);&lt;br /&gt;
&lt;br /&gt;
// multi handle 실행&lt;br /&gt;
&lt;br /&gt;
curl_multi_cleanup(multi_handle);&lt;br /&gt;
curl_easy_cleanup(easy_handle1);&lt;br /&gt;
curl_easy_cleanup(easy_handle2);&lt;br /&gt;
위 예제에서는 curl_easy_init() 함수를 사용하여 두 개의 curl 핸들을 생성하고, curl_easy_setopt() 함수를 사용하여 각 핸들에 대한 옵션을 설정합니다. 이후 curl_multi_init() 함수를 사용하여 multi 핸들을 초기화하고, curl_multi_add_handle() 함수를 사용하여 두 개의 curl 핸들을 추가합니다.&lt;br /&gt;
&lt;br /&gt;
그리고 curl_multi_perform() 함수를 사용하여 추가된 모든 핸들을 실행하고, curl_multi_cleanup() 함수로 multi 핸들을 정리합니다. 마지막으로, 각각의 curl 핸들을 정리하기 위해 curl_easy_cleanup() 함수를 사용합니다.&lt;br /&gt;
&lt;br /&gt;
주의할 점은, multi 핸들을 실행하는 동안 추가된 curl 핸들을 제거하면 안 됩니다. 제거하려면 curl_multi_remove_handle() 함수를 사용해야 합니다. 또한, multi 핸들 실행 후 curl_multi_info_read() 함수를 사용하여 각 핸들의 성공 여부 및 결과를 확인할 수 있습니다.&lt;/div&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
</feed>