PHP 获取 ping 时间的实现方法


Posted in PHP onSeptember 29, 2017

PHP 可以通过exec函数执行shell命令,来获取ping时间。

代码示例:

echo 'PHP_INT_MAX : ' . PHP_INT_MAX . "<br><br>";
 
$ip = '115.29.237.28';    // IP地址
 
if (PATH_SEPARATOR==':')  // linux
{
  echo 'I am linux' . "<br><br>";
   
  exec("ping -c 3 -w 5 $ip", $info);
  echo 'linux info : ' . "<br>";
  print_r($info);
   
  $ping_time_line = end($info);
  echo '<br><br>ping_time_line : ' . $ping_time_line . "<br><br>";
   
  $ping_time = explode("=", $ping_time_line)[1];
  $ping_time_min = explode("/", $ping_time)[0] / 1000.0;
  $ping_time_avg = explode("/", $ping_time)[1] / 1000.0;
  $ping_time_max = explode("/", $ping_time)[2] / 1000.0;
   
  echo $ping_time_min . " " . $ping_time_avg . " " . $ping_time_max . "<br><br>";
   
}
else             // windows
{
  echo 'I am windows' . "<br><br>";
 
  exec("ping -c 3 -w 5 $ip", $info);
  echo 'windows info : ' . "<br>";
  print_r($info);
   
  $info_time = end($info);
  echo '<br><br>info_time : ' . $info_time . "<br><br>";
}

运行结果:

PHP_INT_MAX : 9223372036854775807

I am linux

linux info :

Array ( [0] => PING 115.29.237.28 (115.29.237.28) 56(84) bytes of data. [1] => 64 bytes from 115.29.237.28: icmp_seq=1 ttl=52 time=26.1 ms [2] => 64 bytes from 115.29.237.28: icmp_seq=2 ttl=52 time=27.5 ms [3] => 64 bytes from 115.29.237.28: icmp_seq=3 ttl=52 time=25.2 ms [4] => [5] => — 115.29.237.28 ping statistics — [6] => 3 packets transmitted, 3 received, 0% packet loss, time 2002ms [7] => rtt min/avg/max/mdev = 25.280/26.339/27.590/0.970 ms )

ping_time_line : rtt min/avg/max/mdev = 25.280/26.339/27.590/0.970 ms

0.02528 0.026339 0.02759

 获取Ping时间封装成函数

function ping_time($ip) {
  $ping_cmd = "ping -c 3 -w 5 " . $ip;
  exec($ping_cmd, $info);
  $ping_time_line = end($info);
   
  $ping_time = explode("=", $ping_time_line)[1];
  $ping_time_min = explode("/", $ping_time)[0] / 1000.0;
  $ping_time_avg = explode("/", $ping_time)[1] / 1000.0;
  $ping_time_max = explode("/", $ping_time)[2] / 1000.0;
   
  $result = array();
  $result['ping_min'] = $ping_time_min;
  $result['ping_avg'] = $ping_time_avg;
  $result['ping_max'] = $ping_time_max;
   
  print_r($result);
}
 
ping_time('115.29.237.28');

运行结果:

Array ( [ping_min] => 0.025497 [ping_avg] => 0.025947 [ping_max] => 0.026753 )

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
php程序的国际化实现方法(利用gettext)
Aug 14 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
关于zend studio 出现乱码问题的总结
Jun 23 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
PHP遍历数组的方法汇总
Apr 30 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
php版微信发红包接口用法示例
Sep 23 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
使用PHP+MySql实现微信投票功能实例代码
Sep 29 #PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 #PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
Sep 29 #PHP
WHOOPS PHP调试库的使用
Sep 29 #PHP
Laravel中获取路由参数Route Parameters的五种方法示例
Sep 29 #PHP
PHP网页安全认证的实例详解
Sep 28 #PHP
php二维码生成以及下载实现
Sep 28 #PHP
You might like
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
JavaScript中常见陷阱小结
2010/04/27 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
[17:36]VG战队纪录片
2014/08/21 DOTA
python超简单解决约瑟夫环问题
2015/05/12 Python
Python入门_条件控制(详解)
2017/05/16 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
《大禹治水》教学反思
2014/04/27 职场文书
村容村貌整治方案
2014/05/21 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技