文件在PHP中乱写

时间:2015-07-25 03:29:16

标签: php c file buffer fwrite

这是我的问题的一个非常简单的例子。代码应该分别创建1000个名为file1到file1000的文件,并且在每个文件中,数字1到1000000000应该按升序显示,每行一个数字作为一个文件查看。

{Sleep 100}

执行时,正确创建第一个文件file0001。但是,第二个文件包含无序的数字。我相信这是因为fwrite发送字符串写入一个特殊的缓冲区以便稍后写入?

我想要的是立即写入数据。我不在乎是否需要额外十分钟才能正确写入文件,并且我愿意使用更好的函数来代替fopen()fwrite()和fclose()。我相信C,有一个名为OPEN的系统函数用于创建一个没有任何缓冲的文件,这更像是我想要的。

任何人都可以告诉我应该使用的更好的功能吗?或者我将不得不求助于创建我自己的涉及循环的函数,直到fwrite()函数写入所有数据并祈祷系统不会锁定?

1 个答案:

答案 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在失败时也会返回零。