php模拟ping命令(php exec函数的使用方法)


Posted in PHP onOctober 25, 2013

使用php模拟我们常用的DOS命令ping命令的方法,这里主要用到的是php的内置函数exec来调用系统的ping命令,从而实现ping命令功能的。

<?php
$to_ping='www.phpernote.com';
$count=2;
$psize=66;
echo "正在执行php ping命令,请等待...\n<br><br>";
flush();
while(1){
 echo "<pre>";
 exec("ping -c $count -s $psize $to_ping", $list);
 for($i=0;$i<count($list);$i++){
  print $list[$i]."\n";
 }
 echo "</pre>";
 flush();
 sleep(3);
}
?>

注意使用exec函数必须需要服务器支持调用系统内置函数才行。另外也可以使用system等php内置函数来实现这个功能。php手册对这二个函数的解释:
exec --- 执行外部程式
语法 : string exec ( string command [, array &output [, int &return_var]] )
说明 :
exec( )执行给予的命令command,不过它并不会输出任何东西,它简单的从命令的结果中传回最后一行,如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。
如果有给予参数array,则指定的数组将会被命令所输出的每一行填满,注意 : 如果数组先前已经包含了一些元素的话,exec( )将会把它附加在数组的后面,如果你不想要此函数附加元素的话,你可以在传递此数组给exec( )之前呼叫unset( )。
如果有给予参数array和return_var,则传回执行的状态命令将会写到这个变量。
意 : 如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd( )来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。
注意 : 如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。

system --- 执行外部程式并且显示输出
语法 : string system ( string command [, int &return_var] )
说明 :
system( )执行给予的命令command,并且输出结果。如果有给予参数return_var,则执行命令的状态码将会写到这个变量。
注意 : 如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd( )来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。
注意 : 如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。
这二个都是用来调用系统shell命令,不同点:
exec可以把执行的结果全部返回到$output函数里(数组),$status是执行的状态 0为成功 1为失败
systerm不需要提供$output函数,他是直接把结果返回出来,同样$return_var是执行的状态码 0为成功 1为失败
exec示例:

<?php  
$a = exec("dir",$out,$status);  
print_r($a);  
print_r($out);  
print_r($status);  
?>

system示例:
<?php  
$a = system("dir",$out);  
print_r($a);  
print_r($out);  
?>
PHP 相关文章推荐
多数据表共用一个页的新闻发布
Oct 09 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
Jul 05 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
Sep 28 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
使用phpstorm和xdebug实现远程调试的方法
Dec 29 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
浅谈php中fopen不能创建中文文件名文件的问题
Feb 06 PHP
Laravel5中Cookie的使用详解
May 03 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
PHP实现通过strace定位故障原因的方法
Apr 29 PHP
php导入导出excel实例
Oct 25 #PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 #PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 #PHP
php中并发读写文件冲突的解决方案
Oct 25 #PHP
ajax返回值中有回车换行、空格的解决方法分享
Oct 24 #PHP
学习php分页代码实例
Oct 24 #PHP
获取URL文件名后缀
Oct 24 #PHP
You might like
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
详解Python中的条件判断语句
2015/05/14 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
pandas 对group进行聚合的例子
2019/12/27 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python打开文件的方式有哪些
2020/06/29 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
网站出售协议书范文
2014/10/10 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
golang使用map实现去除重复数组
2022/04/14 Golang