curlopt_returntransfer는 CURL 라이브러리의 옵션이며 일반적으로 CURL 요청의 반환 방법을 설정하는 데 사용됩니다. 이 옵션이 true 로 설정되면 CURL 요청의 결과는 브라우저 나 콘솔에 직접 출력되지 않지만 문자열로 반환됩니다. 이러한 방식으로 개발자는 CURL이 컨텐츠를 직접 표시하는 대신 PHP 코드를 통해 반환 된 데이터를 캡처하고 추가 처리 할 수 있습니다.
기본 사용 :
<span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span></span>
Curl_Multi_Exec을 사용하여 여러 CURL 요청을 수행하는 경우 일반적으로 각 요청에 대한 특정 옵션을 설정해야합니다. 현재 Curlopt_returnTransfer를 포함하여 Curl_Multi_SetOpt를 통해 각 CURL 세션에 대한 옵션을 설정할 수 있습니다.
<span><span><span class="hljs-comment">// 다중 초기화 cURL 세션</span></span><span>
</span><span><span class="hljs-variable">$ch1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>(</span><span><span class="hljs-string">"http://example.com"</span></span><span>);
</span><span><span class="hljs-variable">$ch2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>(</span><span><span class="hljs-string">"http://example.org"</span></span><span>);
</span><span><span class="hljs-comment">// 설정 옵션</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// 멀티 스레딩 초기화 cURL 세션</span></span><span>
</span><span><span class="hljs-variable">$mh</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_init</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-comment">// 요청을 실행하십시오</span></span><span>
</span><span><span class="hljs-variable">$running</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-keyword">do</span></span><span> {
</span><span><span class="hljs-title function_ invoke__">curl_multi_exec</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$running</span></span><span>);
} </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$running</span></span><span>);
</span><span><span class="hljs-comment">// 결과를 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$response1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_getcontent</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-variable">$response2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_getcontent</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-comment">// 출력 결과</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$response1</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$response2</span></span><span>;
</span><span><span class="hljs-comment">// 폐쇄 cURL 세션</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_close</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>);
</span></span>
이 예에서는 각 요청에 대한 응답 데이터가 브라우저 나 콘솔에 직접 출력되는 대신 문자열로 반환되도록 CurlOpt_ReturnTransfer를 각 컬 세션에 대해 true 로 설정합니다. 이러한 방식으로 여러 요청을 처리하는 동안 각 요청의 응답 내용을 수집 할 수 있습니다.
curlopt_returntransfer 의 기능은 컬 요청의 출력 동작을 제어하는 것입니다.
True 로 설정 : 반환 된 컨텐츠는 문자열로 반환되며 개발자는 반환 된 컨텐츠 (예 : 구문 분석, 저장, 출력 등)를 추가로 처리 할 수 있습니다. 대부분의 경우 권장되는 설정입니다. 특히 여러 요청을 실행할 때 각 요청의 결과를 처리해야합니다.
False 로 설정 : CURL 요청은 콘텐츠를 브라우저 또는 콘솔에 직접 출력합니다. 이 시점에서 보통 간단한 GET 요청을 사용하거나 파일을 다운로드 할 때는 코드에서 응답 결과를 직접 캡처 할 수 없습니다.
각 컬 핸들을 설정해야합니다. curl_multi_setopt를 사용하여 여러 요청을 처리 할 때 각 개별 컬 핸들은 curlopt_returntransfer로 설정해야합니다. 이 옵션은 컨텐츠를 반환 할 필요가없는 경우에도 일부 요청에 맞게 설정됩니다.
응답 내용 처리 : 다중 스레드 요청에서 일반적으로 모든 요청이 실행 된 후 Curl_Multi_GetContent () 를 통해 각 요청의 응답 내용을 얻어야합니다. 요청이 완료된 후 각 컬 세션의 반환 결과가 처리되어 있는지 확인하십시오.
디버깅 : 다중 스레드 요청에서 반환 된 컨텐츠 중 일부가 기대치를 충족시키지 못하면 CurlOpt_ReturnTransfer가 CURL 구성 문제로 인한 예외 여부를 관찰하기 위해 CurlOpt_ReturnTransfer를 일시적 으로 설정할 수 있습니다.
다중 API에 대한 응답 데이터 가져 오기 : 여러 API 요청을 설정 하여 동시에 실행하면 효율성이 크게 향상 될 수 있습니다. curlopt_returntransfer는 각 요청의 응답을 캡처하고 추가 처리를 수행하는 데 사용됩니다.
배치 다운로드 파일 : 배치로 파일을 다운로드 할 때 Curlopt_returnTransfer를 사용하여 파일 컨텐츠를 문자열 또는 이진 스트림으로 반환하여 브라우저에 직접 출력을 피하고 후속 저장 작업을 용이하게 할 수 있습니다.
Crawler : 여러 웹 페이지를 동시에 크롤링 해야하는 크롤러의 경우 Curlopt_returnTransfer는 매우 중요한 구성으로 각 요청의 HTML 컨텐츠를 캡처하고 저장하는 데 도움이됩니다.
curlopt_returntransfer 매개 변수를 올바르게 설정하는 것은 다중 스레드 컬 요청의 원활한 진행에 중요합니다. 이 매개 변수를 true 로 설정하면 각 요청의 응답 내용을 효과적으로 캡처하고 프로그램에 추가 처리하거나 저장할 수 있습니다. curl_multi_setopt를 사용하는 경우 효율적인 데이터 처리를 위해 각 컬 핸들 마다이 옵션이 올바르게 설정되어 있는지 확인하십시오.
실제 개발에서 이러한 옵션을 이해하고 유연하게 적용하면 동시 요청을 처리 할 때 더 나은 성능과 제어를 얻을 수 있습니다.