函式名稱:curl_multi_init() 適用版本:PHP 5, PHP 7
函式說明: curl_multi_init() 函式用於初始化一個空的 cURL 多個控制代碼資源。它在使用多個 cURL 請求時非常有用,可以同時傳送多個請求並等待它們全部完成。
語法: resource curl_multi_init ( void )
引數說明: 無引數。
返回值: 返回一個新的 cURL 多個控制代碼的資源。
示例用法: <?php // 建立 cURL 多個控制代碼資源 $multiHandle = curl_multi_init();
// 新增多個 cURL 控制代碼到多控制代碼資源中 $ch1 = curl_init("https://example.com/api1"); curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); curl_multi_add_handle($multiHandle, $ch1);
$ch2 = curl_init("https://example.com/api2"); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); curl_multi_add_handle($multiHandle, $ch2);
// 執行多個 cURL 請求 $running = null; do { curl_multi_exec($multiHandle, $running); } while ($running);
// 檢查請求結果 $results = []; $successCount = 0;
while ($done = curl_multi_info_read($multiHandle)) { $result = curl_multi_getcontent($done['handle']); $results[] = $result;
if ($done['result'] === CURLE_OK) {
$successCount++;
}
curl_multi_remove_handle($multiHandle, $done['handle']);
}
// 關閉多控制代碼資源 curl_multi_close($multiHandle);
// 輸出結果 echo "Total requests: " . $successCount . "\n"; echo "Response results: \n"; foreach ($results as $i => $result) { echo "Request " . ($i + 1) . ": " . $result . "\n"; } ?> 以上示例程式碼使用 curl_init() 建立兩個 cURL 控制代碼,並使用 curl_setopt() 設定相關選項。然後,透過 curl_multi_add_handle() 新增控制代碼到多控制代碼資源中。接著,使用 curl_multi_exec() 執行多個 cURL 請求,並使用 curl_multi_info_read() 迴圈獲取請求結果。最後,透過 curl_multi_remove_handle() 移除控制代碼並關閉多控制代碼資源。最終,輸出請求結果。
請注意,此示例僅用於說明 curl_multi_init() 函式的基本用法,實際應用可能需要更復雜的請求處理和錯誤處理邏輯。