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 IPV6正则表达式验证代码
Feb 16 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
PHP判断是否为空的几个函数对比
Apr 21 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
Mar 07 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
php微信公众号js-sdk开发应用
Nov 28 PHP
php自定义时间转换函数示例
Dec 07 PHP
php面向对象之反射功能与用法分析
Mar 29 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
php mssql 日期出现中文字符的解决方法
2009/03/10 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
详解JavaScript树结构
2017/01/09 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
python日志记录模块实例及改进
2017/02/12 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
面试后感谢信
2014/02/01 职场文书
员工考核管理制度
2014/02/02 职场文书
美容院店长岗位职责
2014/04/08 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
品牌服务方案
2014/06/03 职场文书
会计专业自荐书
2014/07/08 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
关于python中模块和重载的问题
2021/11/02 Python
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers