1.基础知识
1.1 什么是Shell编程?在 Unix 中,shell 可不是简单的命令解释器(典型的有 Windows 中的 DOS ),而是一个全功能的编程环境。Shell 是操作系统的一部分,用来与用户打交道,并且可以用来协调各个命令【1】。用Shell编程可以灵活地解决大量重复任务,十分方便。但是,Shell的语法十分怪异(个人意见),不容易记,如果现在熟悉的语言可以用来写shell那就好了——比如PHP——就可以快速开发Shell程序了(比如我的Preminder的后台程序),于是便有了这篇文章,本文以Linux为例说明PHP-cli的用法,其它平台的版本类似。 1.2 什么是PHP-cli?
刚才说到,我们可以用PHP来开发Shell程序。有的同学可能会问啦:“PHP不是用来做网页的么?-_-”。是的,PHP可以用来做动态网页,并且当初PHP就是为做动态网页而开发的语言,但是理论上PHP可以用来做任何的程序,甚至是桌面程序,而PHP-cli是PHP在命令行运行的支持环境,也就是我们说的可以用来写Shell的环境支持。 PHP-cli是PHP Command Line Interface的简称,如同它名字的意思,就是PHP在命令行运行的接口,区别于在Web服务器上运行的PHP环境(php-cgi,isapi等)【2】。 也就是说,PHP不单可以写前台网页,它还可以用来写后台的程序。 2. 执行PHP-cli脚本 2.1 PHP-cli的语法
当然是跟PHP一模一样啦,因为它就是PHP嘛!只不过一些默认的参数与php-cgi不同,比如运行时间:PHP-cli默认运行时间是无穷,而网页PHP默认设置是30s。 2.2 执行PHP-cli脚本 2.2.1. 直接在终端执行PHP
kangzj@localhost# PHP -r 'print_r(get_defined_constants());'2.2.2. 运行PHP-cli脚本文件
kangzj@localhost# PHP my_script.PHP kangzj@localhost# PHP -f my_script.PHP上而说的PHP文件就是一般的PHP文件没有什么不同。还有一种方式,就是在文件中指令解释器,就可以直接在终端以”./test.PHP执行脚本了”,test.PHP就像下面这样:
代码如下:
补充:PHP的Shell程序并不一定以PHP为扩展名,可以以任意扩展名,甚至不要扩展名,只是为了清楚,我才用的PHP扩展名。 2.2.3. 用Cron执行PHP-cli脚本 cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业,周期性作业,比如备份数据,Preminder定期查询PR等等,添加的方法:打开/etc/crontab,添加: 0 13 * * * /usr/bin/PHP -f /home/PHPscripts/PHPcli.PHP
4. 结语
如果你会PHP的话,那么你也会了一种Shell编程语言! 如果你不会PHP,你去学PHP,就相当于一下子学会动态网页和Shell两种语言!并且你甚至可以用PHP来写具有图形界面的应用程序,Dnspod的动态域名客户端中就有一种是用PHP开发的。 PHP的易学是出名的,如果你还不会,那是在犹豫什么呢? 另外,再宣传一下我的”Preminder”——PR更新Email提醒服务~~
5. 参考文献
1.Linux Shell简介 : //www.jb51.cc/article/37801.htm
2.PHP Command Line Interface : Mystic Unleashed :http://www.php-cli.com/
3.ch 4.2, PHP manual : http://www.php.net
PS:Shell命令还是要知道一些的,否则有些功能不太好实现。 原文链接:https://www.f2er.com/php/26495.html