Php CULLOPT_超时,是否有“else”功能?
如果在30秒内无法连接,curl将关闭连接 如你们所见,我使用的是代理列表。但是,某些代理IP有时在30秒内连接时出现问题,而curl在30秒内无法加载时正在关闭连接 如果达到curl超时,我想为curl connect尝试另一个ip。现在,如果ip不工作,curl将关闭所有内容。我想试试另一个ip。你能给我推荐一个函数吗Php CULLOPT_超时,是否有“else”功能?,php,curl,Php,Curl,如果在30秒内无法连接,curl将关闭连接 如你们所见,我使用的是代理列表。但是,某些代理IP有时在30秒内连接时出现问题,而curl在30秒内无法加载时正在关闭连接 如果达到curl超时,我想为curl connect尝试另一个ip。现在,如果ip不工作,curl将关闭所有内容。我想试试另一个ip。你能给我推荐一个函数吗 为@rubayet编辑。添加了新的代理功能您必须创建一个新的curl会话才能连接到另一个代理。因此,在代码周围放置一个foreach循环,并在代理数组中循环 还可以使用cur
为@rubayet编辑。添加了新的代理功能您必须创建一个新的curl会话才能连接到另一个代理。因此,在代码周围放置一个foreach循环,并在代理数组中循环 还可以使用curl\u errno和curl\u error检查超时之类的错误
也许设置CURLOPT_RETURNTRANSFER并将其加载到var中以修改或处理它会很有用。您必须创建一个新的curl会话以连接到另一个代理。因此,在代码周围放置一个foreach循环,并在代理数组中循环 还可以使用curl\u errno和curl\u error检查超时之类的错误
也许设置CURLOPT\u RETURNTRANSFER并将其加载到var中以修改或处理它会很有用。您只需使用curl\u errno来测试是否发生了CURLE\u操作时间您只需使用curl\u errno来测试是否发生了CURLE\u操作时间哦,是的。这就是我需要的。我还从未见过这种功能。谢谢你的建议。哦,是的。这就是我需要的。我还从未见过这种功能。谢谢你的建议。这是我的代理功能。如何将其与您的功能一起使用?函数get_random_proxy{srand doublemicrotime*1000000;$f_contents=file proxy.txt;$line=$f_contents[array_rand$f_contents];return$line;}$proxy=get_random_proxy;更新了代码。在无限循环中调用get_random_proxy,并在收到响应时中断。这是我的代理函数。如何将其与您的功能一起使用?函数get_random_proxy{srand doublemicrotime*1000000;$f_contents=file proxy.txt;$line=$f_contents[array_rand$f_contents];return$line;}$proxy=get_random_proxy;更新了代码。在无限循环内调用get_random_proxy,并在收到响应时中断。
<?php
function get_random_proxy()
{
srand ((double)microtime()*1000000);
$f_contents = file ("proxy.txt");
$line = $f_contents[array_rand ($f_contents)];
return $line;
}
$proxy = get_random_proxy();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "example.com");
curl_setopt($ch, CURLOPT_PROXY,$proxy);
curl_setopt($ch, CURLOPT_TIMEOUT ,30);
curl_exec($ch);
curl_close($ch);
?>
function get($url, $proxy){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY,$proxy);
curl_setopt($ch, CURLOPT_TIMEOUT ,30);
$response = curl_exec($ch);
curl_close($ch);
return $response
}
$url = 'example.com';
while(true) {
$proxy = get_random_proxy();
$response = get($url, $proxy);
if ($response === False) continue;
else break;
}
//do something with $response