为啥使用 PHP 和 cURL 测量我的 socks5 速度不起作用?
Posted
技术标签:
【中文标题】为啥使用 PHP 和 cURL 测量我的 socks5 速度不起作用?【英文标题】:Why does my socks5 speed measure with usage of PHP and cURL not work?为什么使用 PHP 和 cURL 测量我的 socks5 速度不起作用? 【发布时间】:2011-06-11 21:51:36 【问题描述】:我想通过 php 测量 socks5 服务器的速度,所以我编写了以下代码:
$url = 'http://cachefly.cachefly.net/1mb.test';
$proxy = '126.XXX.XXX.XXX:1080’;
//$auth = $username.':'.$password;
$fp = fopen('1mb.test', 'w');
$start = microtime(true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $auth);
$result = curl_exec($ch);
curl_close($ch);
$end = microtime(true);
fclose($fp);
$diff = $end - $start;
echo "elapsed time: ".$diff." seconds";
$a = 1024 / $diff;
echo '<br>'.floor($a).' kb/s';
不幸的是,代码不起作用。如果不使用 socks5 服务器,文件会被完全下载 - 否则不会。你们中有人知道为什么代码不起作用吗?对于如何实现我的目标,是否有任何替代方案或建议?
真诚的,说。
【问题讨论】:
【参考方案1】:“没有 socks5 服务器,文件将被下载”。换句话说,代理不起作用?
您没有检查 curl 错误。将以下内容添加到您的代码中以查看下载不成功的原因:
$result = curl_exec($ch);
if ($result === FALSE)
die(curl_error($ch));
永远不要假设某些处理外部资源的代码会成功。您的代码可能很完美,但外部资源无法每次都检查成功/失败的原因太多了。
【讨论】:
【参考方案2】:如果没有更多详细信息,就无法判断。它究竟是如何失败的?它总是失败吗?此外,您应该确保使用较新的 libcurl 版本,以免遇到旧错误。
【讨论】:
以上是关于为啥使用 PHP 和 cURL 测量我的 socks5 速度不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
php 使用cURL和PHP(加上重定向)使用测量协议进行简单事件跟踪
使用 PHP 时使用 socks5 代理的 cURL 请求失败,但它通过命令行工作
为啥 php curl 不在我的 cookiefile 中保存 cookie?