这是我的问题的一个非常简单的例子。代码应该分别创建1000个名为file1到file1000的文件,并且在每个文件中,数字1到1000000000应该按升序显示,每行一个数字作为一个文件查看。
{Sleep 100}
执行时,正确创建第一个文件file0001。但是,第二个文件包含无序的数字。我相信这是因为fwrite发送字符串写入一个特殊的缓冲区以便稍后写入?
我想要的是立即写入数据。我不在乎是否需要额外十分钟才能正确写入文件,并且我愿意使用更好的函数来代替fopen()fwrite()和fclose()。我相信C,有一个名为OPEN的系统函数用于创建一个没有任何缓冲的文件,这更像是我想要的。
任何人都可以告诉我应该使用的更好的功能吗?或者我将不得不求助于创建我自己的涉及循环的函数,直到fwrite()函数写入所有数据并祈祷系统不会锁定?
答案 0 :(得分:1)
如果您不想缓冲,请在每次使用fwrite时使用fflush
。
http://php.net/manual/en/function.fflush.php
但是,fwrite
函数应该适用于您的用例,即使它缓冲了数据。缓冲区已订购。
我建议您检查功能的返回值。检查IO相关功能始终是一种好习惯。如果fwrite
函数未成功,则返回false。以下文件详细说明了其他案例。示例是文件系统已满的情况。
http://php.net/manual/en/function.fwrite.php
根据本页面的评论,fwrite
在失败时也会返回零。