我编写了一个流包装器,当我调用include foo://bar
时,我的stream_flush
实现被调用。使用stream_open
调用rb
。那么......为什么要叫同花呢?由于文件是打开的,所以如果我对stream_flush
的理解是正确的,那么我真的没有任何事可做,但如果我的理解是正确的,那么首先不会调用它。< / p>
编辑:因为这有一个&#34;不清楚你在问什么&#34;关闭投票:问题实际上是,在我的stream_flush实现中,如果在只读的fie上调用它我该怎么办?
答案 0 :(得分:3)
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中澄清(可能要到星期五才能重建所有文档)。