php-cli简介(不会Shell语言一样用Shell)


Posted in PHP onJune 03, 2013

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就像下面这样:

#!/usr/bin/php -q 
<?php 
echo "Hello world of PHP CLI!"; 
?>

补充: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简介 : https://3water.com/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命令还是要知道一些的,否则有些功能不太好实现。

PHP 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
用php将任何格式视频转为flv的代码
Sep 03 PHP
PHP生成UTF8文件的方法
May 15 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
php对二维数组进行排序的简单实例
Dec 19 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
PHP输出日历表代码实例
Mar 27 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
CI框架附属类用法分析
Dec 26 PHP
php + ajax 实现的写入数据库操作简单示例
May 16 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
Jun 03 #PHP
php cli模式学习(PHP命令行模式)
Jun 03 #PHP
获取PHP警告错误信息的解决方法
Jun 03 #PHP
php cli 小技巧
Jun 03 #PHP
php中用加号与用array_merge合并数组的区别深入分析
Jun 03 #PHP
PHP在线生成二维码代码(google api)
Jun 03 #PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
Jun 03 #PHP
You might like
PHP的ASP防火墙
2006/10/09 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
PHP多进程简单实例小结
2019/11/09 PHP
javascript实现动态模态绑定grid过程代码
2014/09/22 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
python如何定义带参数的装饰器
2018/03/20 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
详解python-图像处理(映射变换)
2019/03/22 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
生产管理的三大手法
2013/11/11 职场文书
电子商务专员岗位职责
2013/12/11 职场文书
中学生家长评语大全
2014/04/16 职场文书
旅游节目策划方案
2014/05/26 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
公司经营目标责任书
2015/01/29 职场文书
2015年小学开学寄语
2015/02/27 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
电力培训学习心得体会
2016/01/11 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
基于JavaScript实现省市联动效果
2021/06/22 Javascript
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle