Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP问题,fread抛出错误_Php_Mysql_Fread - Fatal编程技术网

PHP问题,fread抛出错误

PHP问题,fread抛出错误,php,mysql,fread,Php,Mysql,Fread,下面是我的部分代码,我使用一个php脚本读取目录中的文件,这些文件不断被写入,这个脚本搜索它们并将其内容写入数据库。我收到的错误是,当一个文件仍在写入时,这个脚本检测到它试图刷新该文件,它收到的$data与文件大小不匹配,因为它已更改,并抛出一个错误 我的问题是如何确保在脚本读取文件之前成功写入文件。提前谢谢 $myfile = fopen($filename, "r") or die("Unable to open file!"); $data = fread($myfile,filesize

下面是我的部分代码,我使用一个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!";
}

可能有很多方法,但最常用的方法是文件锁定。写入文件时获取锁,完成后释放锁。在读取文件之前检查锁


可能有很多方法,但最常用的方法是文件锁定。写入文件时获取锁,完成后释放锁。在读取文件之前检查锁


尝试在
二进制模式下打开,
fopen($filename,'rb')否则,您将以文本模式打开文件,代码0x1a表示文件结束,您无法确保没有锁定系统。请尝试以
二进制模式打开,
fopen($filename,'rb')否则,您将以文本模式打开文件,代码0x1a表示文件结束,并且您无法确保没有某些锁定系统。