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递归实现无限分类生成下拉列表的函数
Aug 08 PHP
PHP 小心urldecode引发的SQL注入漏洞
Oct 27 PHP
PHP设计模式之装饰者模式
Feb 29 PHP
PHP编码规范的深入探讨
Jun 06 PHP
使用php实现快钱支付功能(涉及到接口)
Jul 01 PHP
PHP中对于浮点型的数据需要用不同的方法解决
Mar 11 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 PHP
PHP文件缓存类实现代码
Oct 26 PHP
windows平台中配置nginx+php环境
Dec 06 PHP
phpcms配置列表页以及获得文章发布时间
Jul 04 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
PHP实现递归的三种方法
Jul 04 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP cron中的批处理
2008/09/16 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
js加解密 脚本解密
2008/02/22 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
详解在React里使用&quot;Vuex&quot;
2018/04/02 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
Python 元类使用说明
2009/12/18 Python
python3.5仿微软计算器程序
2020/03/30 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
Python配置文件处理的方法教程
2019/08/29 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
安全生产承诺书
2014/03/26 职场文书
项目负责人任命书
2014/06/04 职场文书
七夕情人节问候语
2015/11/11 职场文书
python代码实现备忘录案例讲解
2021/07/26 Python
一文搞懂Python Sklearn库使用
2021/08/23 Python
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL