我在类上创建了一个logger方法,基本的日志代码是:
// maximum length of file (in characters / bytes)
$maxlength = 40000;
$filename = "logs/$this->account_id.log";
// add to the first line
$fileContent = file_exists($filename) ? file_get_contents($filename, NULL, NULL, NULL, $maxlength) : "";
file_put_contents($filename, '['.date('d-m-Y- H:i:s').'] - '.$message.PHP_EOL. $fileContent);
确保首先显示最新的日志条目。一切正常,除了一些消息被记录,然后在一段时间后恢复到3天前。
文件具有写入权限,任何想法可能会发生什么?
答案 0 :(得分:1)
很可能是并发问题。每个用户都有一个单独的日志文件,但用户可能会在短时间内发送多个请求,从而达到了同时发出多个日志的不良结果。您需要在数据库或独立服务中形成某种类型的队列,这些队列将接收消息,并且是唯一负责写入日志文件的东西。
示例解决方案: