首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

PEAR:常用模块(2)

PEAR:常用模块(2)

主要模块使用简介现在我们将简单地介绍一些比较常用的,而且功能已经比较完善和稳定,可以用于“实战“模块,其中对于几个功能很强大的模块Db,phpdoc,XML_Parser,IT,ITX将在以后的文章中单独介绍。
1.PEAR/Installer这个模块属于pear本身的核心模块,它完成pear其它模块的安装和维护工作,类似perl中的cpan模块的功能,不过目前只有install功能,其它诸如查询,检查依赖性等等都没有完成,pear本身也没有类似cpan那样的开放的站点,不过随着参与pear的开发人员的不断增加,一切都会有的。
使用语法:         PEAR_Installer::installer($file)
$file是需要安装的模块文件,可以是本地文件,也可以是远程的文件,如http://或者是ftp,installer会自动下载到本地。文件一般使用gzip打包,其中要包括一个package.xml文件,用于描述你的这个模块的相关信息,如包含的文件,相互依赖性等,此外当然要包括你的模块的php文件。pacakage.xml的DTD文件在pear目录下面,名字是package.dtd.      
<?phprequire_once "PEAR/Installer.php";$installer = new PEAR_Installer;//安装指定的模块$result = $installer->install($package_file);if ( PEAR::isError($result)){    echo "Install $package_file failed!";}else {    echo "Install $package_file sucess!";}?>2.CMD虽然大多数的php应用很少调用系统命令,因为这些应用都是基于web的,从运行效率和系统的负载考虑,都要避免直接调用系统命令,不过,在有些特殊的应用或者是你愿意把php作为一个shell工具的时候,调用现有的系统工具就是不可避免的了。CMD可以让你很方便地执行一系列的系统命令。
使用语法:         setOption ($option, $setting)
设置参数$options为$setting      
$options是一个常量,它可以是以下值:        
  • CMD_SHUTDOWN : 通过shutdown函数来执行命令
  • CMD_SHELL : 指定shell的路径
  • CMD_OUTPUT : 是否屏蔽命令的标准输出
  • CMD_NOHUP : 使用nohup后台执行命令
  • CMD_VERBOSE : 将错误打印到标准输出
command($command)        
添加需要执行的命令,$command可以是数组或普通的字符串      
exec()        
执行已经添加的命令      
<?php   require_once "CMD.php";   $cmd = new CMD;   $cmd->command('tar zcvf test.tar.gz ~/test');   if ( $cmd->exec() ) {       echo "success!\n";   } esle {       echo "Error:" . $cmd->lastError;   }?>3.Benchmark/Timer和Benchmark/Iterate这2个模块可以让你测试你的代码的运行效率如何,我认为这对于系统调试很有用:你可以尝试不同的算法,仔细考察每种算法需要运行的时间,然后选择最佳的方式。Benchmark/Timer测试运行中在2个不同的时间点的时间差,Benchmark/Iterate则是对Timer扩展,测试运行某段代码(函数)n次所需要的时间。
使用语法:         Benchmark/Timer
Timer::setMarker($name)设置当前时间点为$nameTimer::start()开始测试Timer::stop()停止测试Timer::timeElapsed($start = 'Start', $end = 'Stop')计算$start和$end 这2个时间点的时间差Timer::getProfiling()返回start 和 stop 之间所耗用的时间<?php     require_once "Benchmark/Timer.php";     $timer = new Benchmark_Timer;     $timer->start();     $timer->setMarker('Marker 1');     $timer->stop();     $profiling = $timer->getProfiling();?>Benchmark/Iterate
Iterate::run()        
循环运行指定的函数。这是一个具有可变参数的方法,第一个参数是要循环的次数,第2个参数是要执行的函数,第3个参数起则是要传递给测试函数的参数。      
Iterate::get()        
返回测试所用的时间      
<?php     require_once "Benchmark/Iterate.php";     $benchmark = new Benchmark_Iterate;     function foo($string)     {         print $string."";     }     $benchmark->run(100, 'foo', 'test');     $result = $benchmark->get();?>3.File/Find&glob ($pattern, $dirpath, $pattern_type='php')        
在$dirpath中搜索符合$pattern的目录和文件,返回匹配的文件和目录名数组      
&search ($pattern, $directory, $type='php')        
在$directory中搜索符合$pattern规则的文件,返回匹配的文件名数组(注意,只是文件,不包括子目录)。$pattern是要指定的搜索条件,一般是规则表达式,$patten_type指定使用什么模式的规则表达式,缺省是php模式,你也可以指定"perl"来使用perl模式的规则表达式      
提示:search和glob不同的是,glob并不递归搜索子目录,而search则递归搜索子目录。
<?php    require_once "File/Find.php";    $find = new File_Find;    //搜索当前目录    $php_files = $find->glob("*php",".");    if ( PEAR::isError( $php_files ) ){        die "错误:" . $php_files->getMessage() ."\n" ;    }    //递归搜索当前目录    $all_php_files = $find->search("*php",".");    if ( PEAR::isError( $all_php_files ) ){        die "错误:" . $php_files->getMessage() ."\n" ;    }?>
返回列表