****CodeIgniter使用cli模式运行,把php作为shell编程
shell简介
在计算机科学中,Shell俗称壳(用来区别于核)。而我们常说的shell简单理解就是一个命令行界面,它使得用户能与操作系统的内核进行交互操作。
常见的shell环境有:MS-DOS、Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)等等。
shell的脚本格式是固定的,如下:
|
1
2
3
|
#!/bin/sh#commentsYour commands go here |
第一行称之为shebang,符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。
有两种运行shell的方式:一种是将脚本作为sh的命令行参数,另一种是降脚本作为具有执行权限的可执行文件。
将shell作为命令行参数时的运行方式如下:
|
1
|
sh script.sh |
如果将脚本作为sh的命令行参数来运行,那么脚本中的shebang行也就没什么用处了。
为了是shell脚本能够自己独立运行,需要具备可执行权限。要使脚本独立运行必须利用shebang行。它通过使用位于#!之后的解释器来运行脚本。至于脚本的可执行权限,可以通过chmod命令来设置:
|
1
|
chmod a+x script.sh |
上面的chmod命令赋予所有用script.sh文件的可执行权限。那么这个脚本就可以作为可执行程序运行:
|
1
|
./script.sh |
php-cli简介
用Shell编程可以灵活地解决大量重复任务,十分方便。但是,Shell的语法十分怪异,不容易记,如果现在熟悉的语言可以用来写shell那就好了——比如php——就可以快速开发Shell程序了。
于是php-cli就营运而生了,php-cli是php Command Line Interface的简称,如同它名字的意思,就是php在命令行运行的接口,区别于在Web服务器上运行的php环境(php-cgi, isapi等)。
也就是说,php不单可以写前台网页,它还可以用来写后台的程序。当然是跟php一模一样啦,因为它就是php嘛!只不过一些默认的参数与php-cgi不同,比如运行时间:php-cli默认运行时间是无穷,而网页php默认设置是30s。
codeigniter cli模式
让我们试一试:Hello World!
首先创建一个简单的控制器。使用你的文本编辑器,创建一个叫做 tools.php 的文件,并且输入如下代码:
|
1
2
3
4
5
6
7
8
9
|
<?phpclass Tools extends CI_Controller { public function message($to = 'World') { echo "Hello {$to}!".PHP_EOL; }}?> |
然后将这个文件保存到你的 application/controllers/ 文件夹里。现在正常情况下你可以通过你网站的 URL 来访问它:
|
1
|
example.com/index.php/tools/message/to |
除此之外,我们也可以在 Mac/Linux 中打开终端,或者在 Windows 下进入“运行”输入“cmd”,并进入我们的 CodeIgniter 项目的目录。
|
1
2
|
$ cd /path/to/project;$ php index.php tools message |
如果你跟这这一步步下来,你应该会看到 Hello World!。
|
1
|
$ php index.php tools message "John Smith" |
这里我们像使用 URL 参数一样给它传递了一个参数。“John Smith”作为一个参数被传递了,并且输出也变成:Hello John Smith!。
****CodeIgniter使用cli模式运行,把php作为shell编程的更多相关文章
- php脚本cli 模式运行
参考文章 http://rapheal.sinaapp.com/2013/11/20/php_zend_hello_world/ http://www.douban.com/note/33788568 ...
- Jmeter系列(40)- 详解 Jmeter CLI 模式
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 什么是 CLI 模式 CLI = Co ...
- 『动善时』JMeter基础 — 55、JMeter非GUI模式运行
目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.怎样使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模 ...
- 『动善时』JMeter基础 — 55、使用非GUI模式运行JMeter(命令行模式)
目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模式运 ...
- 处理Codeigniter CLI模式无法读取通过Apache写入的文件缓存
运行环境: Ubuntu 16.04 + PHP 5.6.40 + Apache/2.4.18 Codeigniter: 3.1.10 Codeigniter 3.1.10,缓存驱动方式是文件方式 遇 ...
- 获取当前PHP运行环境是否cli模式
需要用到系统函数php_sapi_name() 或者 系统常量 PHP_SAPI,返回 cli 或 cli_server /* 判断当前的运行环境是否是cli模式 */ function is_cli ...
- ThinkPHP3.1.2 使用cli命令行模式运行
ThinkPHP3.1.2 使用cli命令行模式运行 标签(空格分隔): php 前言 thinkphp3.1.2 需要使用cli方法运行脚本 折腾了一天才搞定 3.1.2的版本真的很古老 解决 增加 ...
- PHP CLI模式开发
PHP CLI模式开发不需要任何一种Web服务器(包括Apache或MS IIS等),这样,CLI可以运行在各种场合.有两种方法可以运行PHP CLI脚本. 第一种方法是使用 # php /path/ ...
- php CLI 模式下的传参方法
在CLI模式(命令行界面 Command Line Interface)下,传入参数有如下3种方法: 一. getopt函数(PHP 4 >= 4.3.0, PHP 5) getopt - 从命 ...
随机推荐
- 一个简单的Python网络爬虫(抓图),针对某论坛.
#coding:utf-8 import urllib2 import re import threading #图片下载 def loadImg(addr,x,y,artName): data = ...
- POJ 2195 Going Home 最小费用最大流 尼玛,心累
D - Going Home Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- jenkins Auth fail验证失败
重新设置密码
- GMM简单解释
1.GMM(guassian mixture model) 混合高斯模型,顾名思义,就是用多个带有权重的高斯密度函数来描述数据的分布情况.理论上来说,高斯分量越多,极值点越多,混合高斯密度函数可以逼近 ...
- Java总结(一):封装——Encapsulation
官方定义:一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法.封装可以被认为是一个保护屏障,防止该类的代码和数 据被外部类定义的代码随机访问. 大白话定义:通过getter和setter方法访问私 ...
- C#之枚举类型
参考: http://www.cnblogs.com/an-wl/archive/2011/04/14/2015815.html 惯例先上MSDN: https://msdn.microsoft.co ...
- VMware Workstation 下进行 桥连接
大家都知道进行桥连接的时候,需要我们的宿主机与虚拟机同处于一个网络段, 使得mask与默认网关相同即可进行连接 ; 本地的IP .掩码 . 网关: 虚拟机的Ip 掩码,网关: // 当然这里的DNS ...
- ios 音乐播放,音乐信息显示方法
下面的博客写的很清楚了 http://msching.github.io/blog/page/2/ 主要涉及AVAudioPlayer和下面这几个函数 MPNowPlayingInfoCenter.d ...
- linux (RHEL) 添加和删除用户
linux添加新用户使用 useradd -----create a new user or update default new user information 删除用户使用userdel -- ...
- Thread.Sleep in WinRT
Thread.Sleep in WinRT static void Sleep(int ms) { new System.Threading.ManualResetEvent(false).Wa ...