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完整的日历类(CLASS)
Nov 27 PHP
php xml-rpc远程调用
Dec 19 PHP
PHP 彩色文字实现代码
Jun 29 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
Nov 07 PHP
php empty()与isset()区别的详细介绍
Jun 17 PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 PHP
php使用正则验证中文
Apr 06 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
thinkPHP中_initialize方法实例分析
Dec 05 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
Jun 11 PHP
php微信开发之音乐回复功能
Jun 14 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
Feb 12 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
PHP7 其他修改
2021/03/09 PHP
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
JSON 数据格式详解
2017/09/13 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
Python多线程和队列操作实例
2015/06/21 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Python3.6正式版新特性预览
2016/12/15 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
Django中Model的使用方法教程
2018/03/07 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
检察院起诉书
2015/05/20 职场文书
2015中秋祝酒词
2015/08/12 职场文书
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python