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 相关文章推荐
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
Nov 18 PHP
php接口数据加密、解密、验证签名
Mar 12 PHP
帝国cms目录结构分享
Jul 06 PHP
PHP基于单例模式实现的数据库操作基类
Jan 15 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
PHP队列场景以及实现代码实例详解
Feb 26 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
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
php反射学习之依赖注入示例
2019/06/14 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
jQuery实现长文字部分显示代码
2013/05/13 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
JavaScript实现动态生成表格
2020/08/02 Javascript
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
Python实现购物系统(示例讲解)
2017/09/13 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
保安岗位职责
2014/02/21 职场文书
安全责任协议书
2014/04/21 职场文书
少年犯观后感
2015/06/11 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技