2012-10-09 105 views
3

是否有一个PHP脚本/片段,允许您检查URL/IP的连接速度。举例来说,URL是www.example.com,当我运行php脚本时,它会显示连接(211毫秒)到URL/IP需要多长时间,我发现一些脚本只显示它是否在线或离线,但不显示它所花的速度。PHP服务器连接测试

我非常了解免费和付费服务。我想创建自己的自定义/专用监视器来监视我的许多服务器,并且无法找到连接到给定位置的简单脚本。

+4

连接速度和ping是不同的东西。 – zerkms

+0

@zerkms是的,这就是为什么我问如果有人知道一个示例脚本来获得连接速度,或者如果有可能与PHP做。 :) – chillers

+1

@DanielO不可能单独在PHP中执行此操作,因为您还需要一些客户端。它也不像“这是连接速度X”那么简单,有太多因素可以影响它。例如,您可以使用TCP流来确定它,但所有这些ACK的开销成本都较高。或者你可以使用UDP流,但是如果你丢包,你会怎么做?您是否认为这会对速度产生负面影响,或者您是否在意在时间帧X中传输的总数据负载?目前尚不清楚,实施起来也不是微不足道的。 – DaveRandom

回答

3

也许是这样的:

<?php 
// Create a curl handle 
$ch = curl_init('http://www.yahoo.com/'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

// Execute 
curl_exec($ch); 

// Check if any error occured 
if(!curl_errno($ch)) { 
    $info = curl_getinfo($ch); 
    echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url']; 
} 
// Close handle 
curl_close($ch); 
?> 
+0

它是直接在页面中加载雅虎? – chillers

+0

立即尝试编辑它。 –

+0

它也这样做。 :) – chillers

0

试试这个:

$ch = curl_init("http://www.google.com/"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$start = microtime(); 
$foo = curl_exec($ch); 
$end = microtime(); 
curl_close($ch); 

echo "Seconds to load = ". $end - $start; 

这不会考虑图片或JavaScript,只是intital响应时间和服务器代码的运行。

+0

这就是我所需要的是响应而不是页面加载速度我测试了它并得到'-0.694715'就是正确的694ms? – chillers

+1

-1因为这不能回答这个问题(一个基于HTTP的HTML从负载很重的服务器载入页面的时间与连接速度几乎没有任何关系),也因为你的代码不工作,主要是因为你没有将'true'传递给'microtime()'。 – DaveRandom

+1

@DaveRandom:This答案是做什么的,实际上你的评论应该得到一个-1,因为你不明白OP在问什么,作为回答的人在做什么。我正在答复答案 – raidenace