我有一个创建LogFile对象(我自己的模型)并将其写入文本文件的函数。为此,我使用的是Laravels Filesystem。我首先在filesystems.php
中设置我的磁盘'logFile' => [
'driver' => 'local',
'root' => storage_path('logFile'),
],
然后我创建了使用此存储的函数
public function setlogFile(Request $request)
{
$logFile = new LogFile();
$logFile->created_at = new \DateTime();;
$logFile->ipAddress = filter_var($request->ip(), FILTER_VALIDATE_IP);
try {
if(Storage::disk('logFile')->has('logFile.txt')) {
$size = Storage::disk('logFile')->size('logFile.txt');
if($size > 2000000) {
Storage::disk('logFile')->move('logFile.txt', 'archive/' . time() . uniqid() . '-logFile.txt');
}
} else {
Storage::disk('logFile')->put('logFile.txt', $logFile);
}
if (Storage::disk('logFile')->append('logFile.txt', $logFile)) {
return response()->json("Success", 200);
} else {
return response()->json(['error' => 'something_went_wrong'], 500);
}
} catch (\Exception $e) {
var_dump($e);
}
}
应该发生的是这个。
我首先获取时间戳和请求的IP,然后创建我的对象。
然后检查以确保我的存储位置中有一个名为logFile.txt的文件。然后我得到这个文件的大小。如果它超过2MB,我将其移动到新位置并创建一个新文件。如果它小于2 MB,我将我的对象追加到它。
现在一切似乎都运转良好。该文件在每个请求上都附加了一行新数据。我的问题似乎是每天至少一次,文件似乎从头开始。我不知道是不是因为它已达到2MB,但似乎没有任何东西保存在存档文件夹中。
我只是想知道这段代码是否有任何问题导致此问题?我有点困惑,为什么会发生这种情况,因为它应该移动文件?
由于