函式名稱:curl_multi_add_handle()
適用版本:PHP 5, PHP 7
函式描述:curl_multi_add_handle() 函式將單個 cURL 控制代碼新增到 curl 多個控制代碼中,使多個 cURL 請求可以同時進行。
語法:bool curl_multi_add_handle ( resource $mh , resource $ch )
引數:
$mh
:必需。curl 多個控制代碼資源,透過 curl_multi_init() 函式建立。$ch
:必需。單個 cURL 控制代碼資源,透過 curl_init() 函式建立。
返回值:
- 該函式返回一個布林值,表示是否成功將 cURL 控制代碼新增到 curl 多個控制代碼中。如果成功,則返回 true;否則返回 false。
示例:
// 建立 curl 多個控制代碼
$mh = curl_multi_init();
// 建立第一個 cURL 控制代碼
$ch1 = curl_init("https://www.example.com/api1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch1);
// 建立第二個 cURL 控制代碼
$ch2 = curl_init("https://www.example.com/api2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);
// 併發執行多個 cURL 請求
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running > 0);
// 關閉所有控制代碼
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
上述示例中,我們首先使用 curl_multi_init()
函式建立了一個 curl 多個控制代碼資源 $mh。然後使用 curl_init()
函式建立了兩個 cURL 控制代碼資源 $ch1 和 $ch2,分別用於傳送兩個不同的 API 請求。接著使用 curl_multi_add_handle()
函式將這兩個 cURL 控制代碼新增到 curl 多個控制代碼中。最後,透過迴圈呼叫 curl_multi_exec()
函式來併發執行這兩個請求,直到所有請求都完成。最後,使用 curl_multi_remove_handle()
函式將控制代碼從多個控制代碼中移除,並呼叫 curl_multi_close()
函式關閉多個控制代碼。
請注意,在使用 curl_multi_add_handle()
函式之後,需要使用 curl_multi_exec()
函式來實際傳送請求。而在 curl_multi_remove_handle()
函式之前,必須等待所有請求完成,可以透過檢查 curl_multi_exec()
函式的返回值來判斷是否還有請求正在進行。