【问题标题】:Why does include call stream_flush?为什么包含调用stream_flush?
【发布时间】:2015-06-29 22:55:34
【问题描述】:

我编写了一个流包装器,当我调用include foo://bar 时,我的stream_flush 实现被调用。 stream_openrb 调用。那么...为什么叫flush?由于文件是以只读方式打开的,如果我对stream_flush 的理解是正确的,那么我真的没有什么可做的,但如果我的理解是正确的,那么一开始就不会调用它。

编辑:因为这得到了“不清楚你在问什么”的近距离投票:问题真的是,当我的 stream_flush 实现在只读文件上调用时我应该做什么?

【问题讨论】:

    标签: php internals


    【解决方案1】:

    stream_flush 通常在关闭流时调用。我真的不明白为什么总是这样做。写了一些东西是有意义的,但当什么都没有写(也就是只读)时就没有意义了。

    在代码中注明/* make sure everything is saved */,如果有任何东西都可以写。

    已通过http://git.php.net/?p=php-src.git;a=commitdiff;h=6ad9cd5367734276d624d6d2a03406ed0d0cd08b(PHP 7.0 树)修复... stream_flush 现在仅在显式刷新或关闭时调用在写入但尚未刷新的内容时。在文档http://svn.php.net/viewvc/phpdoc/en/trunk/reference/stream/streamwrapper/stream-flush.xml?r1=337084&r2=337083&pathrev=337084 中也进行了澄清(可能要到周五才能重建所有文档)。

    【讨论】:

      猜你喜欢
      • 2014-01-30
      • 2019-06-17
      • 1970-01-01
      • 2011-12-22
      • 2013-04-03
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      相关资源
      最近更新 更多