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 23 PHP
PHP中数组定义的几种方法
Sep 01 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
PHP中数组的分组排序实例
Jun 01 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 PHP
CI框架中数据库操作函数$this-&gt;db-&gt;where()相关用法总结
May 17 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
Nov 29 PHP
Smarty模板语法详解
Jul 20 PHP
phpstorm激活码2020附使用详细教程
Sep 25 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初学者最感迷茫的问题小结
2010/03/27 PHP
flash用php连接数据库的代码
2011/04/21 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
js实现五星评价功能
2017/03/08 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
python基础之入门必看操作
2017/07/26 Python
python正则实现提取电话功能
2018/02/24 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
python实现简单图书管理系统
2019/11/22 Python
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
Arti-shopping中文官网:大型海外商品一站式直邮平台
2020/03/23 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
腾讯公司的一个sql题
2013/01/22 面试题
路政管理专业个人自荐信范文
2013/11/30 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
Anaconda配置各版本Pytorch的实现
2021/08/07 Python