【问题标题】:PHP problems, fread throwing errorsPHP 问题,fread 抛出错误
【发布时间】: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 一些锁定系统。

标签: php mysql fread


【解决方案1】:

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

http://php.net/manual/en/function.flock.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多