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
PHP4实际应用经验篇(2)
Oct 09 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
php实现CSV文件导入和导出
Oct 24 PHP
PHP中使用array函数新建一个数组
Nov 19 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
php正则表达式使用方法整理集合
Jan 31 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
SONY ICF-F10中波修复记
2021/03/02 无线电
joomla内置的表单验证功能使用方法
2010/06/11 PHP
用PHP将数据导入到Foxmail的实现代码
2010/09/05 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
css图片自适应大小
2007/11/28 Javascript
JavaScript面象对象设计
2008/04/28 Javascript
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
2015/06/11 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
联想德国官网:Lenovo Germany
2018/07/04 全球购物
函授毕业生自我鉴定
2013/11/06 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
活动总结报告范文
2014/05/04 职场文书
优秀高中学生评语
2014/12/30 职场文书