当前位置:首页 > PHP教程 > php高级应用 > 列表

同时ping多个ip找了最快的ip网的php实例

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-13 09:46:28 浏览: 评论:0 

本文我们来分享一段可以同时ping多个ip然后对比找出网络最快的ip的php程序,这段程序用来找代理ip可是神器,为了翻墙方便,买了个vpn,转到osx下面官方没有提供合适的客户端,无法选择最快的线路,于是就自己写了个脚本,手动ping出最快的IP,代码如下:

  1. $servers = array
  2.     array('VIP荷兰线路01','nl01.yyuu.me','81.4.105.195','4122或3108'), 
  3.     array('VIP法国线路01','fr01.yyuu.me','176.31.206.242','4122或3108'), 
  4.     array('VIP意大利线路01','it01.yyuu.me','37.247.48.226','4122或3108'), 
  5.     array('VIP新加坡线路01','sg01.yyuu.me','128.199.69.209','4122或3108')  //开源软件:phpfensi.com 
  6. ); 
  7.  
  8.  
  9. //配合pcntl_signal使用 
  10. declare(ticks=1); 
  11. //最大的子进程数量 
  12. $max = count($servers); 
  13. //当前的子进程数量 
  14. $child = 0; 
  15.  
  16. //当子进程退出时,会触发该函数 
  17. function sig_handler($sig) { 
  18.     switch($sig) { 
  19.         case SIGCHLD: 
  20.             //do something 
  21.     } 
  22.  
  23. //注册子进程退出时调用的函数 
  24. pcntl_signal(SIGCHLD, "sig_handler"); 
  25. foreach($servers as $server){ 
  26.     $pid = pcntl_fork(); 
  27.     if($pid){ 
  28.         //echo 'main thread start',PHP_EOL; 
  29.     }else
  30.         exec('ping -c 1 '.$server[2],$result); 
  31.         echo $server[1].' '.$server[2].' '.$result[1],PHP_EOL; 
  32.         exit(); 
  33.     } 
  34. }

Tags: php实例 php翻墙

分享到: