<?php
// 设置要访问的 URL
$url = "http://example.com";
// 定义代理服务器列表
$proxyList = array(
array('host' => 'proxy1.example.com', 'port' => 8080, 'user' => 'username1', 'pass' => 'password1'),
array('host' => 'proxy2.example.com', 'port' => 8080, 'user' => 'username2', 'pass' => 'password2'),
array('host' => 'proxy3.example.com', 'port' => 8080, 'user' => 'username3', 'pass' => 'password3')
);
// 创建 curl_multi 句柄
$multiHandle = curl_multi_init();
// 创建代理服务器请求句柄数组
$requestHandles = array();
// 循环创建代理服务器请求句柄
foreach ($proxyList as $proxy) {
// 创建 cURL 句柄
$ch = curl_init();
// 设置 cURL 选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy['host']);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy['port']);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy['user'] . ':' . $proxy['pass']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 将请求句柄添加到 curl_multi 句柄
curl_multi_add_handle($multiHandle, $ch);
$requestHandles[] = $ch;
}
// 执行并发请求
// 这里可以根据需求设计更复杂的逻辑,比如设置最大并发数、处理返回结果等
$active = null;
do {
$status = curl_multi_exec($multiHandle, $active);
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);
// 处理每个请求的响应
foreach ($requestHandles as $ch) {
// 获取响应结果
$response = curl_multi_getcontent($ch);
// 输出响应结果
echo "响应内容:" . $response . "<br>";
// 移除并关闭请求句柄
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
// 关闭 curl_multi 句柄
curl_multi_close($multiHandle);
#作者声明:仅用于学习