这似乎按预期工作 - 允许我将 curl_multi 操作的内容获取到变量中
(感谢相关文档中的许多其他说明(有很多复制粘贴)我所做的只是添加了相关行)
<?
$aURLs = array("https://php.net","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 多句柄
?>