### ob缓冲的介绍
- ob缓冲是服务器向客户端响应数据时,存储响应数据的临时空间
- 服务器在向客户端推送数据之前,不是一次性把所有的数据都给客户端(cli模式除外),而是先push到ob缓冲区域,然后在一点一点给客户端,减轻服务器的压力。
### 开启ob缓冲
- 在php.ini的配置文件中,通过output_buffering参数进行配置
```
putput_buffering
- off: 表示关闭php输出缓冲
- on: 表示打开无限大的输出缓冲
- 4096: 表示打开大小为4096Byte的输出缓冲
```
- 在程序中动态的开启缓冲功能`ob_start()`
- 通过php.ini打开,则作用于所有php页面,使用函数手动打开,则只能作用与当前页面
### php输出顺序
- 打开ob缓冲:echo,print --> php ob缓冲 --> 服务器缓冲 --> 浏览器缓冲 --> 页面展示
- 关闭ob缓冲:echo,print --> 服务器缓冲 --> 浏览器缓冲 --> 页面展示
```
ob缓冲的知识点
1. 在服务中,如果我们开启了ob 缓冲,则echo出来的数据首先会放入ob中
2. 当php页面执行到最后,则会把ob缓冲的数据,刷新到服务器的缓冲中,然后通过服务器对数据封装成http响应包,返回给浏览器
3. 如果没有开启ob,所有数据直接发送到服务器缓冲中
```
### ob缓冲相关函数
- ob_start() 开启ob缓冲
- ob_clean() 清空缓冲区域
- ob_get_contents() 获取缓冲区域里面的内容
- ob_get_length() 获取缓冲区域的长度
- ob_get_clean() 获取缓冲区域内容,并清空缓冲区域
- ob_flush() 将缓冲区域的内容发送到服务器
- ob_end_flush() 将缓冲区域内容大宋到服务器,并关闭缓冲
- on_end_clean() 清空缓冲区域内容,并关闭缓冲
- ob_implicit_flush(true/false) 函数强制有输入时立即发送到浏览器。
### 页面静态化
- 数据库缓存减轻了数据库压力,但是服务器的压力还是存在的
- 页面静态化减轻了服务器和数据库的压力
- 使用页面静态化,查询比较频繁,且内容不经常更新的页面。数据经常变化的页面不适合页面静态化
- 关键代码
```
if(is_file('index.html') && (time() - filemtime('index.html') < 300)) {
// 设置缓冲的失效时间,如果静态文件没有失效,则直接输出静态文件
require_once('index.html')
} else {
// todo 处理数据
ob_start()
// 模板文件
requrie_once('template.php')
// 将缓冲中的数据,保存在静态文件
file_put_contents('index.html', ob_get_contents())
}
```
- linux 基础
- ln 链接
- linux 环境变量
- linux 进程查看
- nginx
- redis
- redis 安装
- php 底层原理
- php源码编译安装
- phpize文件
- php命令行
- php7 新特性
- php7 变量
- php7 生命周期
- php sapi运行模式
- php 内存管理
- php 运行机制和Zend虚拟机
- php垃圾回收
- php 基础
- php.ini
- php函数
- 面向对象
- php 文件上传
- ob缓冲和页面静态化
- php中的session
- php cURL扩展
- composer 应用
- php 错误和异常
- thinkphp
- tp6容器和依赖注入
- tp6 的服务
- tp6事件
- tp6 多应用
- tp6路由
- tp6 cache
- tp6 request
- tp6 中间件
- tp6 response
- tp6 Db
- 备忘录
- 数据库表