当php在网络驱动器上写入大字符串时,会放入垃圾或丢失部分

时间:2013-06-10 13:35:25

标签: php file fwrite network-drive

我的php脚本需要编写文本文件,(实际编写php代码),以便在下次运行时包含它。所以我拥有来自previus运行的所有数据(数组),不使用数据库。 这些文件保存在网络驱动器(SAN)上。

该脚本每秒运行3-4次(大约每300毫秒),文件大小为1.2 MB(大约)

有时文件已损坏,缺少文件结束(EOF)

有时候我会得到文字(重复一部分字符串)

例如

$write_string = '$arrMK[1][1]=1.80;$arrMK[1][2]=1.82;$arrMK[1][3]=2.14;$arrMK[1][4]=1.80;$arrMK[2][1]=2.43;$arrMK[2][2]=1.13;$arrMK[2][3]=1.33;$arrMK[2][4]=4.11;... and so on...';

和文件的内容类似(粗体重复部分):

$arrMK[1][<strong>1]=1.80;$arrMK[1][2]</strong>=1.82;$arrMK[1][3]=2.14;$arrMK[1][4]=1.80;$arrMK[2][1]=2.43;$arrMK[2][2]=1.13;$ar<strong>1]=1.80;$arrMK[1][2]</strong>rMK[2][3]=1.33;$arrMK[2][4]=4.11;

如果文件大小小于1 MB,则一切正常。

我尝试使用 fopen / fwrite ,file_put_contents,结果相同。 有关于此的任何建议吗?

利亚

1 个答案:

答案 0 :(得分:0)

可能是PHP脚本在用户需要之前无法完成其写入操作。 尝试在脚本上调用fflush()和fclose()以确保文件正确关闭。

请记住要注意可能阻止PHP正确保存文件的PHP超时/调优问题。双重记住也要删除旧文件,否则你的系统管理员迟早会杀了你......

顺便说一句,恕我直言,这是一种非常难看的做法。 您可以使用会话来保存用户状态和环境(检查session_start