當前位置: 首頁> 最新文章列表> 詳解curl_multi_add_handle 添加句柄後,如何正確執行請求並處理返回結果?

詳解curl_multi_add_handle 添加句柄後,如何正確執行請求並處理返回結果?

gitbox 2025-08-23
<span><span><span class="hljs-meta"><?php</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-string">"初始化 PHP 環境...\n"</span></span><span>;
</span><span><span class="hljs-variable">$version</span></span><span> = </span><span><span class="hljs-title function_ invoke__">phpversion</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"當前 PHP 版本: <span class="hljs-subst">$version</span></span></span><span>\n";
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

</span><span><span class="hljs-meta"><?php</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-string">"<h1>詳解 curl_multi_add_handle 添加句柄後,如何正確執行請求並處理返回結果?</h1>"</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>在 PHP 中,使用 <code>cURL
' ; echo "

2. 初始化cURL 多句柄管理器

"
; echo "

然後,初始化一個多句柄管理器curl_multi_init()

"
; echo '
<span class="fun">$mh = curl_multi_init();</span>
'
; echo "

3. 將單個句柄添加到多句柄管理器

"
; echo "

使用curl_multi_add_handle()將每個單句柄加入管理器:

"
; echo '
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
'
;
echo "

4. 執行並發請求

"
; echo "

添加完成後,需要循環執行curl_multi_exec()直到所有請求完成:

"
; echo '
$running = null;
do {
    $status = curl_multi_exec($mh, $running);
    // 可選: 等待文件描述符變化,減少 CPU 佔用
    curl_multi_select($mh);
} while ($running > 0);
'
;
echo "

5. 獲取返回結果

"
; echo "

請求完成後,可以使用curl_multi_getcontent()獲取每個句柄的返回內容:

"
; echo '
$response1 = curl_multi_getcontent($ch1);
$response2 = curl_multi_getcontent($ch2);

echo "Response 1: " . $response1 . "\n";
echo "Response 2: " . $response2 . "\n";
'
;
echo "

6. 移除並關閉句柄

"
; echo "

最後,必須清理資源,先從多句柄管理器移除,再關閉單句柄和多句柄:

"
; echo '
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);

curl_close($ch1);
curl_close($ch2);
curl_multi_close($mh);
'
;
echo "

總結

"
; echo "

使用curl_multi_add_handle後,正確執行並獲取結果的關鍵步驟是:

"
; echo "
  1. 創建獨立cURL 句柄並設置返回選項。
  2. 初始化多句柄管理器。
  3. 將句柄添加到管理器中。
  4. 循環執行curl_multi_exec直到完成。
  5. 使用curl_multi_getcontent獲取結果。
  6. 移除並關閉句柄,釋放資源。
"
;
echo "

掌握這些步驟,你就可以高效地進行並發HTTP 請求,同時保證返回數據被正確處理。

"
; ?>