gpt4 book ai didi

php - 文件在 PHP 中乱写

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:13 25 4
gpt4 key购买 nike

这是我的问题的一个 super 简单的例子。该代码预计将创建 1000 个文件,分别命名为 file1 到 file1000,在每个文件中,数字 1 到 1000000000 应该按升序出现,在查看文件时每行一个数字。

<?php 
for ($filenum=1;$filenum<=1000;$filenum++){
$handle=fopen("file".$filenum,"w");
for ($num=1;$num<=1000000000;$num++){
fwrite($handle,$num."\n");
}
fclose($handle);
}
?>

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

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

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

最佳答案

如果您不想缓冲,请在每次使用 fwrite 时使用 fflushhttp://php.net/manual/en/function.fflush.php

但是 fwrite 函数应该适用于您的用例,即使它缓冲了数据。缓冲区是有序的。

我建议您检查函数的返回值。检查它的 IO 相关功能始终是一个好习惯。 fwrite 函数如果没有成功则返回 false。下面的文档详细解释了其他情况。示例情况是您的文件系统已满。

http://php.net/manual/en/function.fwrite.php

根据本页的评论,fwrite 也会在失败时返回零。

关于php - 文件在 PHP 中乱写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31622603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com