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 相关文章推荐
Ajax+PHP边学边练 之五 图片处理
Dec 03 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
PHP常用函数和常见疑难问题解答
Mar 05 PHP
smarty内置函数config_load用法实例
Jan 22 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
Laravel框架使用Redis的方法详解
May 30 PHP
php获取微信基础接口凭证Access_token
Aug 23 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
Apr 13 PHP
PHP执行普通shell命令流程解析
Aug 24 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入门经历和学习过程分享
2014/04/11 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
JS之相等操作符详解
2016/09/13 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
详解vue中axios的封装
2018/07/18 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
python 自动批量打开网页的示例
2019/02/21 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
自荐信包含哪些内容
2013/10/30 职场文书
物业门卫岗位职责
2013/12/28 职场文书
培训班主持词
2014/03/28 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python
Python selenium的这三种等待方式一定要会!
2021/06/10 Python