# php-cli
*****
在前面的简单介绍中,我们已经了解了有 php-cli 这个模式,现在我们继续详细了解下 php-cli 和 传统 web 模式不一样的地方吧。
<br />
## 超时时间
在 php-cli 中,是没有超时时间的,也无法通过 set\_time\_limit 设置超时时间,例如:
```php
<?php
set_time_limit(30);
while (1) {
echo 1;
sleep(1);
}
```
这段代码,在常规 web 下运行,只要到30秒就会报 Fatal error: Maximum execution time of 30 seconds exceeded in ...... 这样的错误。
而在 php-cli 中,这段代码将会一直执行,一直输出到1到控制台中。
<br />
## buffer缓冲
在常规 web 模式中,echo、var_dump、phpinfo等输出语句/函数,默认情况下是先进入 php 缓冲区,等缓冲区到达一定数量,才开始传输给 web 服务器的,但是在 php-cli 模式中,默认是关闭 buffer,直接输出,例如以下代码:
```php
<?php
/**
* php-cli下默认关闭buffer,由于web访问测试较麻烦,
* 该段代码只为了查看以及测试缓冲区的作用,在web模式下,默认开启,无需手动开启,可自行配置
*/
ob_start(); // 开启buffer缓冲区
for ($i = 0; $i < 1000; $i++) {
echo $i;
sleep(1);
if ($i % 10 == 0) {
//当i为10的倍数时,将直接结束并输出缓冲区的数据,然后再次开启缓冲区
ob_end_flush();
ob_start();
}
}
```
> 可通过 ob_get_contents 函数获取缓冲区内容,ob 缓冲系列函数可自行搜索了解
buffer 缓冲详细内容可查看:
[关于php的buffer缓冲区](http://blog.huanghui.xyz/2018/12/10/Swoole/Swoole%E5%9F%BA%E7%A1%80/%E5%85%B3%E4%BA%8Ephp%E7%9A%84buffer%E7%BC%93%E5%86%B2%E5%8C%BA/)
<br />
## 标准输入/输出/错误
执行一个命令行都存在3个标准文件(linux 一切皆文件)
* 标准输入(stdin,通常对应终端的键盘,进程可通过该文件获取键盘输入的数据)
* 标准输出(stdout,对应终端的屏幕,进程通过写入数据到该文件,将数据显示到到屏幕)
* 标准错误(stderr,对应终端的屏幕,进程通过写入数据到该文件,将错误信息显示到屏幕)
在 php-cli 命令下,可通过以上3个文件句柄 进行一系列的逻辑操作,比如:
启动 php 文件,监听标准输入,获取到输入的网址,php 再进行网址的数据请求/接收 等等操作,而在常规 web 模式,标准输出会被拦截。
> echo var_dump等输出函数其实就是 stdout,但是在常规 web 访问下被重定向到了 web 服务器,然后由 web 服务器输出
了解详细内容可查看:[PHP的各种I/O流以及用法](http://blog.huanghui.xyz/2018/12/10/Swoole/Swoole%E5%9F%BA%E7%A1%80/php%E7%9A%84%E5%90%84%E7%A7%8DIO%E6%B5%81%E4%BB%A5%E5%8F%8A%E7%94%A8%E6%B3%95/)
<br />
## php-cli 专属扩展
php 有些扩展在常规 web 下运行时没用/没有意义的。例如:
* swoole扩展
* socket扩展
* 等等
- 引言
- Introduction
- 运行模式
- php-fpm
- php-cli
- 基础介绍
- 网络协议
- ip
- tcp
- tcp
- http
- webSocket
- udp
- port端口
- 会话管理
- cookie
- session
- api/token
- linux基础
- lnmp安装
- 命令
- 进程管理
- 扩展安装
- 端口监控
- 防火墙说明
- php7.0
- 部分新特性
- php回调/闭包
- 回调事件
- 闭包/匿名函数
- php多进程
- 多进程开启
- 进程通信
- 进程信号
- 僵尸进程
- 孤儿进程
- 守护进程
- 同步/异步
- 阻塞/非阻塞
- 协程
- Swoole
- 初始Swoole
- 运行机制
- 生命周期
- composer使用
- EasySwoole
- 设计理念
- 组件说明
- 运行过程
- demo
- 提问的艺术