十分に簡単、これを試してみて、トリック:)
$logsToKeep = file_get_contents($file, NULL, NULL, -125000, 125000);
file_put_contents($file,$logsToKeep);
編集を行います。(どこでもPHP5から)前V7.1にバージョンを実行している場合、あなたは
を使用することができますが
$offset=filesize($file)-125000;
if($offset>0){
$logsToKeep = file_get_contents($file, NULL, NULL, $offset, 125000);
file_put_contents($file,$logsToKeep);
}
しかし、これは効率を低下させます。その答えは効率的である。 php docを引用すると、 "file_get_contents()はファイルの内容を文字列に読み込むための好ましい方法で、パフォーマンスを向上させるためにOSでサポートされていればメモリマッピングテクニックを使用します。したがって、負のオフセットへのクリーンな呼び出しは、ファイルの最後のNバイトを取得する最良の方法です。
これは['ftruncate()'](http://php.net/manual/en/function.ftruncate.php)の機能です。ファイルの末尾を保持したい場合は、必要な部分を新しいファイルにコピーする独自のコードを記述する必要があります。次に、古いファイルを新しいファイルに置き換えます。 – axiac
別のプロセスがログファイルを書き込み用に開いていて、「追加」モードを使用していない場合、それらは切り捨てられた位置に調整されません。ログファイルのローテーションは、通常、ファイルの名前を変更し、新しいファイルを開始するように信号をロガーに送信することによって行われます。 – Barmar