ob_start是PHP中非常重要的一个函数,实现缓存,生成静态页面等等,都离不开ob_start
我发现在ruby中没有对应的这个功能,但我利用ruby的block特性实现了它.若有什么问题或建议,欢迎提出。
#title:ob_start for ruby
#author:axgle (2006-10-25)
#version:1.0
#see:http://php.net/ob_start
class Ob
require 'stringio'
def self.start(&block)
$stdout=@buffer=StringIO.new
block.call
end
def self.get_contents
$stdout = STDOUT
@buffer.rewind
@buffer.read
end
end
def ob_start(&block)
Ob.start(&block)
end
def ob_get_contents
Ob.get_contents
end
#使用举例(example):
ob_start do
#输出缓冲开始
p "aaa" #输出缓冲1
puts "bbb" #输出缓冲2
print File.open(__FILE__).read #输出缓冲3,文件本身的内容(也可以是其他文件,来自数据库的数据等等)
#require "other"
data=ob_get_contents #获取所有的输出缓冲内容,输出缓冲结束
#以下是标准输出
puts data.size
puts data.include?("aaa")
puts data.include?("bbb")
puts data
end
分享到:
- 2006-10-25 19:16
- 浏览 2369
- 评论(0)
- 论坛回复 / 浏览 (0 / 3755)
- 查看更多
相关推荐
- 首先,使用`ob_start()`开启缓冲。 - 接着,通过POST表单获取数据库ID,并根据ID查询数据库,获取数据。 - 使用Smarty将查询结果赋值给模板变量。 - 渲染并显示模板,此时所有输出被缓冲,未发送到浏览器。 -...
在使用ob_start()或者ob_start('ob_gzhandler')进行输出控制时,也要注意避免过多的嵌套或者错误地使用这些函数,这可能会导致不可预料的错误和性能问题。正确的使用方法是在输出之前调用ob_start(),在所有输出完成...
PHP输出缓冲函数主要包括ob_start(), ob_get_contents(), ob_end_clean(), ob_get_clean()等,这些函数在Web开发中非常有用,能够有效地管理输出的内容,特别是在进行复杂的输出操作或文件传输时。下面将详细介绍...
在这个例子中,`ob_start()`开启缓冲,然后输出的内容会被保存,直到`ob_end_flush()`被调用,这时才将缓冲区的内容发送到浏览器。在这两者之间,可以设置HTTP头信息,例如`header()`函数,它必须在任何输出之前调用...
ob_start(); // 开启输出缓冲 echo "Hello\n"; // 输出文本 header("location:index.php"); // 设置重定向 ob_end_flush(); // 将缓冲区内容发送至客户端 ?> ``` - 在这段代码中,`ob_start();`用于开启输出...
在提供的代码示例中,首先检查了`ob_gzip`函数是否存在(虽然实际上`ob_gzip`不是一个单独的函数,可能是`ob_gzhandler`的误写),然后通过`ob_start('ob_gzhandler')`启用GZIP压缩。接下来,生成一些测试内容并输出...
有些信息比方经常不变的,但是还是能变的信息放在缓存中以加快显示速度,这是很有价值的,所谓的缓存,通俗的理解就是一些保存在服务器端的共用信 息.它是于服务器同生死的,我们在保存缓存的时候可以指定下次更新的时间...
我想将PHP脚本中输出的东西收集在一起,于是使用了ob_start和ob_end_flush这两个函数,确实有达到收集输出内容的作用,但同时也将这些打印到了控制台界面中。我想问的是有没有办法,阻止PHP像控制台输出信息。该软件...
这是因为`ob_start`会将所有输出的数据暂存起来,直到你显式地调用`ob_end_flush()`或`flush()`来发送缓冲区的内容到浏览器。 下面我们将详细讨论`ob_start`函数以及与之相关的其他输出控制函数: 1. **`ob_start`...
以上场景只是`ob_start()`功能的一部分,实际上,配合其他`ob_`系列函数(如`ob_get_contents()`、`ob_end_clean()`、`ob_end_flush()`等),还可以实现更多高级功能,例如处理输出过滤、控制浏览器缓存、生成压缩后...
当`ob_start()`启动缓冲后,你可以通过调用`ob_get_contents()`来读取已积累的输出,而不会实际将这些内容发送给浏览器。 `ob_end_clean()` 函数则用于结束缓冲区并丢弃其中的内容。它不同于`ob_end_flush()`,后者...
`ob_start()`函数在这种场景下就显得尤为重要,它可以帮助我们将输出缓冲区开启,以便于捕获图片的二进制数据。下面将详细阐述如何使用`ob_start()`配合其他函数来实现这个功能。 `ob_start()`是PHP的输出控制函数...
ob_start()还可以配合ob_get_contents()使用,将输出保存到变量中,这在需要对输出内容进行处理或修改时非常有用。 文章还提供了一个有趣的例子来说明output_buffering的工作原理。当output_buffering设置为4096...
【标题】"Jlink-ob_ob_jlinkob_jlink-ob_Jlink_OB_jlink_源码"涉及的是一个针对Jlink OB(On-Board)的定制化版本,它带有电平转换功能,适用于不同电压标准的电子设备之间的通信。Jlink OB是SEGGER公司JLink调试器...
在这个例子中,`ob_start()`确保了在尝试使用`header()`进行重定向时,不会因为之前有输出(如"Hello\n")而导致错误。`ob_end_flush()`则在适当的时候将整个缓冲区的内容发送给浏览器。 ### 相关函数介绍 1. **...