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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
用PHP实现读取和编写XML DOM代码
Apr 07 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
Mar 13 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
PHP中ini_set与ini_get用法实例
Nov 04 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
Oct 18 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
Nov 08 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
php获取'/'传参的值简单方法
Jul 13 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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
深入密码加salt原理的分析
2013/06/06 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
[56:01]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 Effect vs EG
2018/03/31 DOTA
Python自定义类的数组排序实现代码
2016/08/28 Python
python如何爬取个性签名
2018/06/19 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
python+mysql实现教务管理系统
2019/02/20 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
美国第一香水网站:Perfume.com
2017/01/23 全球购物
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
食品质检员岗位职责
2015/04/08 职场文书
运动会加油稿30字
2015/07/21 职场文书
2016三八妇女节校园广播稿
2015/12/17 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
让文件路径提取变得更简单的Python Path库
2021/05/27 Python