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 相关文章推荐
mysq GBKl乱码
Nov 28 PHP
PHP-MySQL教程归纳总结
Jun 07 PHP
php 常用类整理
Dec 23 PHP
php/js获取客户端mac地址的实现代码
Jul 08 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
codeigniter框架批量插入数据
Jan 09 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
php实现对两个数组进行减法操作的方法
Apr 17 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
Jun 24 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 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中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python生成器推导式用法简单示例
2019/10/08 Python
python 元组的使用方法
2020/06/09 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
用python计算文件的MD5值
2020/12/23 Python
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
庆祝三八妇女节标语
2014/10/09 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server