這對我來說似乎如預期般運作 - 允許我從 curl_multi 操作中獲取內容到變數中
(感謝相關文件中許多其他註釋(有很多複製/貼上),我所做的只是添加了相關的行)
<?
$aURLs = array("https://php.dev.org.tw","http://www.w3cschools.com"); // URL 陣列
$mh = curl_multi_init(); // 初始化 curl Multi
$aCurlHandles = array(); // 為個別的 curl 控制碼建立一個陣列
foreach ($aURLs as $id=>$url) { // 為每個 url 添加控制碼
$ch = curl_setup($url,$socks5_proxy,$usernamepass);
$ch = curl_init(); // 初始化 curl,然後設定您的選項
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // 返回結果 - 非常重要
curl_setopt($ch, CURLOPT_HEADER, 0); // 輸出中沒有標頭
$aCurlHandles[$url] = $ch;
curl_multi_add_handle($mh,$ch);
}
$active = null;
// 執行控制碼
do {
$mrc = curl_multi_exec($mh, $active);
}
while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
/* 這是相關的部分 */
// 遍歷控制碼並獲取您的內容
foreach ($aCurlHandles as $url=>$ch) {
$html = curl_multi_getcontent($ch); // 獲取內容
// 處理 HTML
curl_multi_remove_handle($mh, $ch); // 移除控制碼(假設您已完成);
}
/* 相關部分結束 */
curl_multi_close($mh); // 關閉 curl 多重處理器
?>