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执行zip与rar解压缩方法实现代码
Dec 05 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
PHP中each与list用法分析
Jan 08 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
php多文件打包下载的实例代码
Jul 12 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 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
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
JavaScript运算符小结
2015/06/03 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
python实现滑雪游戏
2020/02/22 Python
python requests.get带header
2020/05/05 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
单位单身证明范本
2014/01/11 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
工人先进事迹材料
2014/12/26 职场文书
2015年新学期寄语
2015/02/26 职场文书
社区干部培训心得体会
2016/01/06 职场文书
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL