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.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
PHP设置图片文件上传大小的具体实现方法
Oct 11 PHP
一个严格的PHP Session会话超时时间设置方法
Jun 10 PHP
Laravel 4 初级教程之安装及入门
Oct 30 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
php 读取输出其他文件的实现方法
Jul 26 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
Oct 13 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
laravel-admin 实现给grid的列添加行数序号的方法
Oct 08 PHP
Nginx+php配置文件及原理解析
Dec 09 PHP
深入解析PHP底层机制及相关原理
Dec 11 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 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
php实现简单四则运算器
2020/11/29 PHP
JavaScript数值数组排序示例分享
2014/05/27 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
对于Python装饰器使用的一些建议
2015/06/03 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
python flask搭建web应用教程
2019/11/19 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
自我评价的正确写法
2013/09/19 职场文书
18岁生日感言
2014/01/12 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
考核工作实施方案
2014/03/30 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
电钳工人个人求职信
2014/05/10 职场文书
诚信贷款承诺书
2014/05/30 职场文书
领导班子四风对照检查材料范文
2014/09/27 职场文书
办公室个人总结
2015/02/28 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android