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自定义函数返回多个值
Nov 26 PHP
zend framework文件上传功能实例代码
Dec 25 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
浅析php单例模式
Nov 25 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
CI框架集成Smarty的方法分析
May 17 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
php中实现字符串翻转的方法
Feb 22 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 PHP
Laravel 修改验证异常的响应格式实例代码详解
May 25 PHP
PHP与Web页面交互操作实例分析
Jun 02 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之数据库操作详解及乱码解决!
2007/01/02 PHP
PHP flush()与ob_flush()的区别详解
2013/06/03 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
2013/06/25 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
微信红包随机生成算法php版
2016/07/21 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
PHP 图片处理
2020/09/16 PHP
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
python实现识别相似图片小结
2016/02/22 Python
Python3 操作符重载方法示例
2017/11/23 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
python学习基础之循环import及import过程
2018/04/22 Python
python tornado微信开发入门代码
2018/08/24 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
大学生怎样进行自我评价
2013/12/07 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
领导干部对照检查材料
2014/08/24 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
领导干部失职检讨书
2015/05/05 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
警示教育观后感
2015/06/17 职场文书
Python实现打乒乓小游戏
2021/09/25 Python