知识大全 PHP也可以当成Shell Script使用

Posted

篇首语:知识是抵御一切灾祸的盾牌。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP也可以当成Shell Script使用相关的知识,希望对你有一定的参考价值。

PHP也可以当成Shell Script使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   PHP 怎么这么红    最近 PHP(Personal Hypertext Preprocessor) 似乎已经成了这一两年来 Linux/Unix 上最广为大家所使用的网页处理语言﹐它的方便 强大功能与 OpenSource 的特性使得它正逐渐侵蚀到传统 CGI 甚至是 MicroSoft ASP(Active Server Page)的市场﹐几乎各大网站征招人才莫不以会 PHP 作为基本条件     PHP 确实有这个资格可以这么红﹐原因有下面数点 :    PHP 是 OpenSource 软件﹐完全免费﹐可以自由散布﹐因此吸引了极多的人来使用﹐也因为如此﹐吸引到了商业公司为其发展更好的引擎与最佳化软件(请参考 )     PHP 本身非常简单易懂﹐浅显的指令语法﹐外加一些基本的对象导向处理能力﹐让新手足以在最短时间内学会     PHP 提供了相当多的功能﹐包含了数学处理 字符串处理 网络相关功能 各种数据库的支持 影像处理功能 有为数众多的发展者正为 PHP 发展各式各样的新功能﹐扩充性极佳     PHP 非常容易与 Apache 相结合﹐作为 Apache 的模块来使用﹐设定安装上相当简单﹐也因为 Apache 目前已经占据了 Web Server 全球 % 的市场﹐PHP 自然而然成为 Apache 最佳搭配     不过﹐这次要讲的主题不是 PHP 在网页设计上的应用﹐而是 PHP 在 Shell Script 上的应用﹐一般所知的 Shell Script 大约就是 tcsh bash perl 或是 python 这几类语言﹐我所要谈的就是将 PHP 当成 Shell Script 来使用      PHP 执行档的安装    一般 PHP 作为网页处理语言都是要编译成 Apache 的模块﹐这里当然不么做﹐也因此编译起来很简单﹐只要以 root 的身分进行如下动作 :    解开 php xx tar gz  cd php  configure  make    编译完之后﹐在 php 目录下有一个可执行档﹐档名为 php﹐将它 copy 到 /usr/local/bin 下即可 注意﹐如果档案太大﹐可以使用 strip 指令将 php 的方式将不必要的信息去除﹐这样档案就会小得多了      第一个程序    开始撰写我们的第一个 PHP Shell Script 程序﹐这个例子印出 Hello world ! :  #!/usr/local/bin/php q  <?  echo Hello world ! ;  ?>    注意到 PHP 原本是应用在网页应用的﹐因此它内定会送出 HTML 的 HEADER﹐但是在此我们是要将 PHP 用作 Shell Script﹐ q 就是表示不要送出 HEADER 的意思﹐你可以试试看不加上 q 的显示结果     在这个例子中﹐/usr/local/bin/php 是表示要执行 /usr/local/bin/ 下的 PHP﹐因为我们刚才将它装在该处 echo 指令将 Hello world ! 印出﹐其中的 字符是换行字符     注意到在将这个程序存成档案后﹐须将其 chmod 成为可执行属性(chmod +x 文件名)﹐然后才能执行喔      进阶使用 I    有时候我们需要在程序执行时﹐送进一些参数﹐比如说 ls 这个指令﹐后面可以加上 l 参数﹐PHP Shell Script 一样也有支持这样的用法﹐有两个特殊的变量 : $argc 记录著后面送入参数的个数﹐$argv[] 数组参数存著的则是参数的内容 比如说我现在要设计一个算两个数字总和的程序 :    #!/usr/local/bin/php q  <?  $sum= ;  $sum=$sum+$argv[ ]+$argv[ ];  echo $sum;  ?>    假设将此程序命名为 sum php ﹐则执行 sum php 按下 enter 则会印出     如果要算出不特定个数的参数和﹐那么就得要用到 $argc 这个特殊变量了 :    #!/usr/local/bin/php q  <?  $sum= ;  for ($t= ;$t<=$argc;$t++)  $sum=$sum+$argv[$t];  echo $sum;  ?>    假设将此程序命名为 bigsum php ﹐则执行 bigsum php 按下 enter 则会印出 ﹐执行 bigsum php 按下 enter 则会印出     有时候我们需要在程序执行中输入资料﹐但是 PHP 原本就是用于网页设计﹐而网页上的资料输入自然都是用 FORM 的方式来输入﹐所以这将 PHP 作为 Shell Script 时问题就来了﹐好在 PHP 有提供了开文件功能﹐而在 Linux/Uinx 之下﹐输入(input)这件事原本就可以用开档的方式来完成﹐我们要开启的是 /dev/stdin 这个设备档(stdin 是表示 standard input 的意思)﹐程序如下 :    #!/usr/local/bin/php q  <?  $fp=fopen( /dev/stdin r );  $inputstr=fgets($fp );  fclose($fp);    echo \\n \\n ;  echo $inputstr;  ?>    其中的 fgets($fp ) 是指从 $fp 这个档案(也就是 /dev/stdin )中读取出 个 byte 的资料﹐程序执行到这行便会停下来等待我们的输入﹐当我们输入完按下 enter 之后﹐程序就会将刚才我们输入的资料给印出来了      进阶使用 II    虽然已经可以处理输入﹐但是这样的功能显然还是太简单﹐无法应付更大的应用﹐比如说我需要一个功能是将一串资料流(data stream)中的 HTML 给去除﹐这时便需要完整地处理输出输入转向的能力﹐我们可以先设计程序如下 :    #!/usr/local/bin/php q  <?  $fp=fopen( /dev/stdin r );    while(!feof($fp))   $c=fgetc($fp);  $inputstr=$inputstr $c;  ;    fclose($fp);    echo $inputstr;  ?>    假设将此程序命名为 filt php ﹐如果你直接执行这个程序﹐它会一直等待你输入﹐直到你按下 Ctrl+D 后才会将你的输入资料给印出﹐我们可以这么执行它 :    more filt php | filt php     这样的做法是将 filt php 这个程序用 more 给秀出并转向给 filt php 这个程序﹐filt php 会不断接受资料(事实上就是 filt php 程序代码本身)﹐最后将其印出     我们可以在其中加上过滤 HTML 的功能 :    #!/usr/local/bin/php q  <?  $fp=fopen( /dev/stdin r );    while(!feof($fp))   $c=fgetc($fp);  $inputstr=$inputstr $c;  ;    fclose($fp);    $inputstr=ereg_replace( <([^<>]*)> $inputstr);    echo $inputstr;  ?>    假设将此程序命名为 filt php ﹐如此一来便完成了过滤功能﹐不信请拿个 HTML 档来试试看 :    more l | filt php     你便会看到删除了 HTML TAG 的文件了      结论    PHP 拿来当 Shell Script 事实上相当地好用﹐原因是 PHP 本身很好学﹐而且它又支持了各种数据库﹐当你已经经常拿 PHP 来设计你的网站之后﹐绝对不太喜欢再使用其它的 Shell Script 语言来处理其它必须非网页的部份﹐这时候拿 PHP 来当做 Shell Script 的好处就会显现出来了﹐你可以以一贯的方式来发展整个系统﹐而不必一下要用 PHP一下又用 Perl/Python 或是 C cha138/Article/program/PHP/201311/20792

相关参考

知识大全 解析php中获取系统信息的方法

  $root=getenv(DOCUMENT_ROOT);////服务器文档根目录$port=getenv(SERVER_PORT);////服务器端口$file=getenv(SCRIPT_NAM

知识大全 关于js与php互相传值的介绍

  JS是前台的语言PHP是后台的语言初学时会经常出现前后台分不清的情况(我当初就是这样的现在有时也在犯)我当初的想法是就把前后台当成两个岛他们是无法跨越的HTML就像一座桥当你想要把一座岛上的变量传

知识大全 shell grep 查找进程的小技巧

大部分人在写Shell过滤进程的时候都会使用grep在psaux的输出结果中查找指定的进程但此时也会把grep进程也显示出来比如查找pptpd进程会匹配出来两条  复制代码代码如下:  [root@s

知识大全 jsp如何调用linux shell

  经常碰到运营部门人要清缓存而缓存一直存在问题老在电脑面前处理也不是个办法想了个方法通过访问一个jsp页面自动清缓存    <%@pagelanguage="java"im

知识大全 关于shell命令的定向输出 2;&1

  mymand>mylogtxt>&应该是最经典的用法了  命令的结果可以通过%>的形式来定向输出%表示文件描述符为标准输出stdout为标准错误stderr系统默认%值是

知识大全