`
axgle
  • 浏览: 94192 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ob_start for ruby

阅读更多
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 
分享到:
评论

相关推荐

    PHP生成静态页面(ob_start+smarty)生成

    - 首先,使用`ob_start()`开启缓冲。 - 接着,通过POST表单获取数据库ID,并根据ID查询数据库,获取数据。 - 使用Smarty将查询结果赋值给模板变量。 - 渲染并显示模板,此时所有输出被缓冲,未发送到浏览器。 -...

    ob_start(),ob_start(ob_gzhandler)使用

    在使用ob_start()或者ob_start('ob_gzhandler')进行输出控制时,也要注意避免过多的嵌套或者错误地使用这些函数,这可能会导致不可预料的错误和性能问题。正确的使用方法是在输出之前调用ob_start(),在所有输出完成...

    关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解

    PHP输出缓冲函数主要包括ob_start(), ob_get_contents(), ob_end_clean(), ob_get_clean()等,这些函数在Web开发中非常有用,能够有效地管理输出的内容,特别是在进行复杂的输出操作或文件传输时。下面将详细介绍...

    PHP用法ob_start生成html页面的方法_.docx

    在这个例子中,`ob_start()`开启缓冲,然后输出的内容会被保存,直到`ob_end_flush()`被调用,这时才将缓冲区的内容发送到浏览器。在这两者之间,可以设置HTTP头信息,例如`header()`函数,它必须在任何输出之前调用...

    用PHP的ob_start();控制您的浏览器cache!

    ob_start(); // 开启输出缓冲 echo "Hello\n"; // 输出文本 header("location:index.php"); // 设置重定向 ob_end_flush(); // 将缓冲区内容发送至客户端 ?> ``` - 在这段代码中,`ob_start();`用于开启输出...

    php基于ob_start(ob_gzhandler)实现网页压缩功能的方法

    在提供的代码示例中,首先检查了`ob_gzip`函数是否存在(虽然实际上`ob_gzip`不是一个单独的函数,可能是`ob_gzhandler`的误写),然后通过`ob_start('ob_gzhandler')`启用GZIP压缩。接下来,生成一些测试内容并输出...

    PHP缓存技术详解 ob_start

    有些信息比方经常不变的,但是还是能变的信息放在缓存中以加快显示速度,这是很有价值的,所谓的缓存,通俗的理解就是一些保存在服务器端的共用信 息.它是于服务器同生死的,我们在保存缓存的时候可以指定下次更新的时间...

    php中 ob_start等函数截取标准输出的方法

    我想将PHP脚本中输出的东西收集在一起,于是使用了ob_start和ob_end_flush这两个函数,确实有达到收集输出内容的作用,但同时也将这些打印到了控制台界面中。我想问的是有没有办法,阻止PHP像控制台输出信息。该软件...

    PHP中ob_start函数的使用说明

    这是因为`ob_start`会将所有输出的数据暂存起来,直到你显式地调用`ob_end_flush()`或`flush()`来发送缓冲区的内容到浏览器。 下面我们将详细讨论`ob_start`函数以及与之相关的其他输出控制函数: 1. **`ob_start`...

    解析PHP中ob_start()函数的用法

    以上场景只是`ob_start()`功能的一部分,实际上,配合其他`ob_`系列函数(如`ob_get_contents()`、`ob_end_clean()`、`ob_end_flush()`等),还可以实现更多高级功能,例如处理输出过滤、控制浏览器缓存、生成压缩后...

    用php的ob_start来生成静态页面的方法分析

    当`ob_start()`启动缓冲后,你可以通过调用`ob_get_contents()`来读取已积累的输出,而不会实际将这些内容发送给浏览器。 `ob_end_clean()` 函数则用于结束缓冲区并丢弃其中的内容。它不同于`ob_end_flush()`,后者...

    php使用ob_start()实现图片存入变量的方法

    `ob_start()`函数在这种场景下就显得尤为重要,它可以帮助我们将输出缓冲区开启,以便于捕获图片的二进制数据。下面将详细阐述如何使用`ob_start()`配合其他函数来实现这个功能。 `ob_start()`是PHP的输出控制函数...

    php缓冲 output_buffering和ob_start使用介绍

    ob_start()还可以配合ob_get_contents()使用,将输出保存到变量中,这在需要对输出内容进行处理或修改时非常有用。 文章还提供了一个有趣的例子来说明output_buffering的工作原理。当output_buffering设置为4096...

    Jlink-ob_ob_jlinkob_jlink-ob_Jlink_OB_jlink_源码

    【标题】"Jlink-ob_ob_jlinkob_jlink-ob_Jlink_OB_jlink_源码"涉及的是一个针对Jlink OB(On-Board)的定制化版本,它带有电平转换功能,适用于不同电压标准的电子设备之间的通信。Jlink OB是SEGGER公司JLink调试器...

    用PHP ob_start()控制浏览器cache、生成html实现代码

    在这个例子中,`ob_start()`确保了在尝试使用`header()`进行重定向时,不会因为之前有输出(如"Hello\n")而导致错误。`ob_end_flush()`则在适当的时候将整个缓冲区的内容发送给浏览器。 ### 相关函数介绍 1. **...

Global site tag (gtag.js) - Google Analytics