PHP缓存机制

使用php自身的缓存机制

如果要测试php自己的缓存机制, 需要配置php.ini文件

1
2
3
display_errors=On
output_buffering=Off
error_reporting= 设置错误级别

两种缓冲区:outputbuffer和程序缓存
ob缓存关闭以后就放到程序缓存,程序缓存必须放到header后面,否则报错


函数:

1
2
3
4
5
ob_start(); //开启缓存
ob_clean(); //清空 outputbuffer的内容
ob_end_clean(); //关闭ob缓存,同时清空
ob_flush(); //输出ob内容,并清空,但不关闭
ob_end_flush(); //把ob缓存的内容输出,并关闭ob

测试题:

1
2
3
4
5
6
7
8
9
<?php 
ob_start();
echo "abc";
header("content-type:text/html;charset=utf-8");
echo "hello";
ob_clean();
echo "aa";
header("content-type:text/html;charset=utf-8");
?>

输出:aa
不报错
没有关闭,aa放入ob


1
2
3
4
5
6
7
8
9
<?php 
ob_start();
echo "abc";
header("content-type:text/html;charset=utf-8");
echo "hello";
ob_end_clean();
echo "aa";
header("content-type:text/html;charset=utf-8");
?>

输出:aa
报错
aa放入的是程序缓存


1
2
3
4
5
6
7
8
9
<?php 
ob_start();
echo "abc";
header("content-type:text/html;charset=utf-8");
echo "hello";
ob_flush();
echo "aa";
echo ob_get_contents();
?>

输出:abchelloaaaa
等待后面的一起输出


1
2
3
4
5
6
7
8
9
<?php 
ob_start();
echo "abc";
header("content-type:text/html;charset=utf-8");
echo "hello";
ob_end_flush();
echo "aa";
echo ob_get_contents();
?>

输出:abchelloaaabchelloaa
最后再关闭