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 相关文章推荐
用PHP调用数据库的存贮过程
Oct 09 PHP
基于mysql的bbs设计(三)
Oct 09 PHP
对squid中refresh_pattern的一些理解和建议
Apr 17 PHP
php smarty模版引擎中变量操作符及使用方法
Dec 11 PHP
用php来改写404错误页让你的页面更友好
Jan 24 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
php实现利用phpexcel导出数据
Aug 24 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP ADODB实现事务处理功能示例
May 25 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 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
一些星际专用术语解释
2020/03/04 星际争霸
php中var_export与var_dump的区别分析
2010/08/21 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
javascript 短路法代码精简
2009/08/20 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
浅谈python可视化包Bokeh
2018/02/07 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
python识别验证码的思路及解决方案
2020/09/13 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
《伯牙绝弦》教学反思
2016/02/16 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
Golang中异常处理机制详解
2021/06/08 Golang
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
教你部署vue项目到docker
2022/04/05 Vue.js