函式:curl_multi_exec() 適用版本:PHP 5, PHP 7
用法:該函式用於同時處理多個cURL請求。
resource curl_multi_exec ( resource $mh , int &$still_running )
引數:
$mh
:由 curl_multi_init() 返回的 cURL 多處理控制代碼。&$still_running
:返回一個整數值,表示還在進行中的請求數量。
返回值:
- 如果出現錯誤,返回一個 CURLM_* 錯誤碼(例如,CURLE_OUT_OF_MEMORY表示記憶體不足)。
- 如果執行成功,返回 CURLM_CALL_MULTI_PERFORM。
- 如果所有請求都完成並且沒有錯誤,返回 CURLM_OK。
示例:
$mh = curl_multi_init();
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "http://example.com/request1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch1);
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "http://example.com/request2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);
do {
$status = curl_multi_exec($mh, $still_running);
} while ($status === CURLM_CALL_MULTI_PERFORM || $still_running);
// 檢查錯誤
if ($status !== CURLM_OK) {
echo "cURL multi-exec error: " . curl_multi_strerror($status);
}
// 獲取請求結果
$result1 = curl_multi_getcontent($ch1);
$result2 = curl_multi_getcontent($ch2);
// 關閉控制代碼
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
echo "Request 1 result: " . $result1;
echo "Request 2 result: " . $result2;
這個示例展示瞭如何使用 curl_multi_exec()
來同時處理兩個cURL請求。你可以新增更多的cURL控制代碼到多處理控制代碼 ($mh
),然後使用迴圈來執行並檢查請求的狀態,直到所有請求都完成。最後,你可以使用 curl_multi_getcontent()
函式獲取每個請求的結果。請注意,你仍然需要使用 curl_multi_remove_handle()
和 curl_multi_close()
關閉每個請求的控制代碼。