0

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 サーバーを使用しないと、ファイルは完全にダウンロードされます。コードが機能しない理由を知っている人はいますか? 目標を達成する方法について、代替案や提案はありますか?

よろしくお願いします。

4

2 に答える 2

1

「socks5サーバーがないと、ファイルがダウンロードされます」。つまり、プロキシが機能していませんか?

curl エラーをチェックしていません。以下をコードに追加して、ダウンロードが成功しない理由を確認します。

$result = curl_exec($ch);
if ($result === FALSE) {
   die(curl_error($ch));
}

外部リソースを扱うコードがうまくいくとは決して思い込まないでください。コードは完璧かもしれませんが、外部リソースが毎回成功/失敗をチェックしない理由が多すぎます。

于 2011-06-11T23:12:36.217 に答える
0

より多くの詳細がなければ、それを伝えることは不可能です. 正確にはどのように失敗しますか?それは常に失敗しますか?また、古いバグが発生しないように、最新の libcurl バージョンを使用していることを確認する必要があります。

于 2011-06-11T22:23:08.777 に答える