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 相关文章推荐
用Socket发送电子邮件
Oct 09 PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
php模拟js函数unescape的函数代码
Oct 20 PHP
关于Sphinx创建全文检索的索引介绍
Jun 25 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
php利用cookie实现自动登录的方法
Dec 10 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
Linux系统中为php添加pcntl扩展
Aug 28 PHP
/etc/php-fpm.d/www.conf 配置注意事项
Feb 04 PHP
基于Laravel 多个中间件的执行顺序详解
Oct 21 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实现随机合并数组并排序(原排序)
2015/11/26 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
php桥接模式应用案例分析
2019/10/23 PHP
js常用排序实现代码
2010/12/28 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
javascript中Date对象的getDay方法使用指南
2014/12/22 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
Python 解析XML文件
2009/04/15 Python
Python正则表达式匹配HTML页面编码
2015/04/08 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
python逆序打印各位数字的方法
2018/06/25 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
python opencv实现简易画图板
2020/08/27 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
巴西购物网站:Estrela10
2018/12/13 全球购物
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
abstract是什么意思
2012/02/12 面试题
do you have any Best Practice for testing
2016/06/04 面试题
应届生人事助理求职信
2013/11/09 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
布达拉宫导游词
2015/02/02 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书