【问题标题】:PHP delete first row of file till threshold is reached [duplicate]PHP删除第一行文件直到达到阈值[重复]
【发布时间】:2020-05-23 22:49:33
【问题描述】:

我想将我的日志文件缩减到 7KB。 但是修剪只运行一次,文件大小也不会更新。

代码如下:

$thresholdKB = "7";
$files = glob('logs/*.{log}', GLOB_BRACE);

foreach($files as $file) {
    $filesizeKB = filesize("$file") / 1024;
    if ($filesizeKB > $thresholdKB){
        while ($filesizeKB > $thresholdKB) {
            $filesizeKB = filesize("$file") / 1024;

            $lines = file("$file"); 
            unset($lines[0]); 
            $fp = fopen("$file", 'w'); 
            fwrite($fp, implode('', $lines)); 
            fclose($fp);
        }
    }
}

【问题讨论】:

  • 仅供参考,implode() 的粘连参数可以在粘连为空字符串时完全省略。默认情况下,胶水是一个空字符串。 ...但也许你想用换行符内爆。

标签: php trim filesize


【解决方案1】:

filesize 的结果被缓存。更新文件后需要拨打clearstatcache()

https://www.php.net/manual/en/function.clearstatcache.php

【讨论】:

  • 每当您觉得答案是“简单/基本”时,这通常表明解决方案已经存在于 Stack Overflow 上。在发布新答案之前,请快速检查是否可以找到重复的答案。总是更喜欢关闭可关闭的问题,而不是回答它们并在此处生成冗余或离题的内容。感谢您考虑这项需要付出更多努力但最终对网站有更多帮助的公民义务。
猜你喜欢
  • 2012-07-19
  • 2014-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多