[转]用PHP的ob_start();控制您的浏览器cache!
Output Control
函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用
header()
或
setcookie(),
发送的文件头信息产生影响
,
只对那些类似于
echo()
和
PHP
代码的数据块有作用。
我们先举一个简单的例子,让大家对
Output Control
有一个大致的印象:
Example 1.
CODE<?php
ob_start(); //
打开缓冲区
echo \"Hellon\"; //
输出
header("location:index.php"); //
把浏览器重定向到
index.php
ob_end_flush();//
输出全部内容到浏览器
?>
所
有对
header()
函数有了解的人都知道,这个函数会发送一段文件头给浏览器,但是如果在使用这个函数之前已经有了任何输出(包括空输出,比如空格,回
车和换行)就会提示出错。如果我们去掉第一行的
ob_start()
,再执行此程序,我们会发现得到了一条错误提示:
"Header
had all ready send by"
!但是加上
ob_start
,就不会提示出错,原因是当打开了缓冲区,
echo
后面的字符不会输出到浏览器,而是保留在服务器,直到你使用
flush
或者
ob_end_flush
才会输出,所以并不会有任何文件头输出的错误!
一、
相关函数简介:
1
、
Flush
:刷新缓冲区的内容,输出。
函数格式:
flush()
说明:这个函数经常使用,效率很高。
2
、
ob_start
:打开输出缓冲区
函数格式:
void
ob_start(void)
说明:当缓冲区激活时,所有来自
PHP
程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用
ob_end_flush()
或
flush()
输出缓冲区的内容。
3
、
ob_get_contents
:返回内部缓冲区的内容。
使用方法:
string
ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回
FALSE
。
4
、
ob_get_length
:返回内部缓冲区的长度。
使用方法:
int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和
ob_get_contents
一样,如果输出缓冲区没有激活。则返回
FALSE
。
5
、
ob_end_flush
:发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
使用方法:
void
ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)。
6
、
ob_end_clean
:删除内部缓冲区的内容,并且
相关文档:
看yii框架源码的时候,发现了
ReflectionClass这个方法,才发现原来是php5的新东西,于是稍微研究了下。php的反射api一共有:
class
Reflection
{ }
interface Reflector
{ }
class
ReflectionException
extends
Exception
{ }
class
Re ......
(4)映射类(ReflectionClass)
ReflectionClass类允许你反向映射类。
<?
php
interface MySerializable
{
// ...}
class My
Object
{
// ...}
/** A counter class */
class
Counter
exten ......
In the directory where you plan to install Elgg, do the following:
Create the file .htaccess and add these two lines
RewriteEngine on
RewriteRule ^testing.php$ modrewrite.php
This tells the webserver to load modrewrite.php when testing.php is
requested.
In order to get this test to work on ......