【发布时间】:2016-03-03 17:21:33
【问题描述】:
我的部分代码如下,我正在使用 php 脚本来读取目录中的文件,这些文件会不断写入,此脚本会搜索它们并将其内容写入数据库。我收到的错误是当一个文件仍在被写入并且这个脚本检测到它尝试读取文件时,它接收到的 $data 与文件大小不匹配,因为它已经改变并且抛出了一个错误。
我的问题是如何在此脚本读取文件之前确保文件已成功写入。提前致谢。
$myfile = fopen($filename, "r") or die("Unable to open file!");
$data = fread($myfile,filesize($filename));
fclose($myfile);
一些阅读建议似乎最好在写入文件的脚本中包含以下代码。
if (flock($file,LOCK_EX)){
fwrite($file,"Write something");
flock($file,LOCK_UN);
} else {
echo "Error locking file!";
}
【问题讨论】:
-
尝试在
binary-mode 下打开,fopen($filename, 'rb');否则您将以文本模式打开文件,并且代码 0x1a 表示文件结束,您无法确保 w/ o 一些锁定系统。