PHP问题,fread抛出错误
下面是我的部分代码,我使用一个php脚本读取目录中的文件,这些文件不断被写入,这个脚本搜索它们并将其内容写入数据库。我收到的错误是,当一个文件仍在写入时,这个脚本检测到它试图刷新该文件,它收到的$data与文件大小不匹配,因为它已更改,并抛出一个错误 我的问题是如何确保在脚本读取文件之前成功写入文件。提前谢谢PHP问题,fread抛出错误,php,mysql,fread,Php,Mysql,Fread,下面是我的部分代码,我使用一个php脚本读取目录中的文件,这些文件不断被写入,这个脚本搜索它们并将其内容写入数据库。我收到的错误是,当一个文件仍在写入时,这个脚本检测到它试图刷新该文件,它收到的$data与文件大小不匹配,因为它已更改,并抛出一个错误 我的问题是如何确保在脚本读取文件之前成功写入文件。提前谢谢 $myfile = fopen($filename, "r") or die("Unable to open file!"); $data = fread($myfile,filesize
$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!";
}
可能有很多方法,但最常用的方法是文件锁定。写入文件时获取锁,完成后释放锁。在读取文件之前检查锁
可能有很多方法,但最常用的方法是文件锁定。写入文件时获取锁,完成后释放锁。在读取文件之前检查锁
尝试在
二进制模式下打开,fopen($filename,'rb')代码>否则,您将以文本模式打开文件,代码0x1a表示文件结束,您无法确保没有锁定系统。请尝试以二进制模式打开,fopen($filename,'rb')代码>否则,您将以文本模式打开文件,代码0x1a表示文件结束,并且您无法确保没有某些锁定系统。