比如我一个网站有3条路线。分别是www.a1.com、www.a2.com、www.a3.com用户访问的时候用什么方法检测哪条路线最佳的速度。再跳转到该条路线。有个我是想法用客户端ping值最优来跳转,但是客户端没有办法获取ping值。所以在此请大侠们给个好建议。小弟感激不尽

解决方案 »

  1.   

    http://blog.csdn.net/gumanren/archive/2010/07/21/5752394.aspxphp ping ip
      

  2.   

    php是服务器端的。获取的只是服务器端的ping值。
    如果采用ping值来做,那么必须获取客户端的ping值才是最准确的。还有其他方法吗。或许不用ping值来做。
      

  3.   

    让客户端每个服务器都进入一次。A1,A2,A3都进一次,看看客户端进入哪个服务器时间最短,然后就让它进入对应的服务器。
      

  4.   

    以客户端打开网页执行为开始点,然后返回数据到服务器上,并执行PHP页面为终点,我建议你可以用JQ做一个AJAX的应用,把开始时间记录下来,然后等到其开始访问服务器的把数据返回到客户端,这样不管客户端时间到底是几点,重要的是这2个时间差就是数据传递到服务器的时间!
    var t1=new Date().getTime();
    $.ajax({
      url: 'http://www.a1.com/ceshi.php';
      type: 'post';
      data: {};
      success:function(data){var t2=new Date().getTime()-t1;//ceshi返回什么不重要,重要的是数据来回跑花了多少时间,这个时间就是t2;}
      }
      

  5.   

    套上面的结构,你可以这么操作:
    var arr=new Array('www.a1.com','www.a2.com','www.a3.com');
    var t1=new Date().getTime();
    var arr2=new Array();
    for(var i=0;i<arr.length;i++)
     {
      $.get('arr[i]'+'/ceshi.php',function(data){var arr2[i]=new Date().getTime()-t1;});//把时间差赋给数组$arr2;
      }
    var tt=Math.min(arr2);//找到时间最小的那个;
    window.location=arr[tt.index];//导向对应的最快的站点!呵呵。不知道我这么做是不是有点多此一举!
      

  6.   

    我用ajax做过了。
    如果在www.a1.com上面检测的话。
    www.a2.com和www.a3.com是出错的。不能异地发送不同域的GET。
      

  7.   

    你用$.post试,然后在参数后面true/false都试一下。同步/异步!
    如果还不行,那我就真想不到还有什么好方法可以测试的客户端到服务端的数据传输时间了。
      

  8.   

    处于安全考虑,Ajax不可以跨域
      

  9.   

    像这种情况一般是判断其IP,网通的用网通的,电信的用电信的,然后就是用IP判断地址,连接就近的服务器
      

  10.   

    网上看到一段代码,很有趣,楼主可以试一试:
    [code=JScrip]var domains = ["www.qq.com", "www.sina.com.cn", "www.sohu.com"];
    var output = "";
    for (var i = 0; i < domains.length; ++i)
    output += "<img src=\"http://" + domains[i] + "\" onerror=\"window.location='http://" + domains[i] + "';\"/>";
    document.write(output);
    [/code]
      

  11.   

    这种方法不能做到详细速度的分流。
    我已经测试做过。不能做到选择到最快的那条线路。如果能在客户端获取到ping www.a1.com、www.a2.com、www.a3.com ping值的话。那么问题就可以解决了。
      

  12.   


    我用你的方法做。JQ有个getJSON能实现跨域,但是每次执行排在最前面的域名肯定得到的ping值小。不知道是什么问题