我有一个网站,可以同时有多个用户在同一时间写入同一个文件。以下是我的代码示例。
PHP 5.6.20
我了解到在PHP中,如果多个用户同时尝试写入同一个文件,就有可能导致数据损坏。当然,我不想编写可能会在长期运行中导致某些数据损坏的代码。
我尝试在浏览器上几乎同时运行以上代码,以模拟多个用户同时写入同一个文件,但是它没有产生任何错误或对正在写入的文件造成任何数据损坏,但我仍然不确定未来是否会发生数据损坏。
我读到可以使用flock来确保2个用户不能同时写入文件,但是由于我测试了以上代码并且没有发生数据损坏,所以我不确定是否应该使用flock更新我的代码,还是保持原样。
我的问题是:
1)以上代码是否有损坏正在写入的文件的风险?
2)如果是,使用flock会解决这个问题吗? 如果是,我应该如何在以上代码中实现flock?
编辑:
我知道可以通过使用数据库来解决这种不确定性,但对于此案例,最好使用纯文本,请不要建议我使用数据库。
提前感谢您的帮助。
PHP 5.6.20
<?php
$root=realpath($_SERVER["DOCUMENT_ROOT"]);
$var=time()."|";
echo $var."<br/>";
$filename=$root."/Testing/Testing/test1.txt";
$myfile=fopen($filename,"a");
fwrite($myfile,$var);
fclose($myfile);
$myfile=fopen($filename,"r");
$contents = fread($myfile, filesize($filename));
echo $contents;
fclose($myfile);
?>
我了解到在PHP中,如果多个用户同时尝试写入同一个文件,就有可能导致数据损坏。当然,我不想编写可能会在长期运行中导致某些数据损坏的代码。
我尝试在浏览器上几乎同时运行以上代码,以模拟多个用户同时写入同一个文件,但是它没有产生任何错误或对正在写入的文件造成任何数据损坏,但我仍然不确定未来是否会发生数据损坏。
我读到可以使用flock来确保2个用户不能同时写入文件,但是由于我测试了以上代码并且没有发生数据损坏,所以我不确定是否应该使用flock更新我的代码,还是保持原样。
我的问题是:
1)以上代码是否有损坏正在写入的文件的风险?
2)如果是,使用flock会解决这个问题吗? 如果是,我应该如何在以上代码中实现flock?
编辑:
我知道可以通过使用数据库来解决这种不确定性,但对于此案例,最好使用纯文本,请不要建议我使用数据库。
提前感谢您的帮助。