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音乐采集(部分代码)
Feb 14 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
Mar 07 PHP
PHP zlib扩展实现页面GZIP压缩输出
Jun 17 PHP
php 文章调用类代码
Aug 11 PHP
php删除数组元素示例分享
Feb 17 PHP
跟我学Laravel之视图 &amp; Response
Oct 15 PHP
推荐十款免费 WordPress 插件
Mar 24 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
PHP使用XMLWriter读写xml文件操作详解
Jul 31 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 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
用php过滤危险html代码的函数
2008/07/22 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
Python实现获取操作系统版本信息方法
2015/04/08 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
大数据分析用java还是Python
2020/07/06 Python
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
运动会广播稿30字
2014/01/21 职场文书
士力架广告词
2014/03/20 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
教师学习心得体会范文
2016/01/21 职场文书
详解MySQL的半同步
2021/04/22 MySQL
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers