查詢

curl_multi_exec()函式—用法及示例

「 同時處理多個cURL請求 」


函式: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() 關閉每個請求的控制代碼。

補充糾錯
上一個函式: curl_multi_errno()函式
下一個函式: curl_multi_getcontent()函式
熱門PHP函式
分享連結