替换文件最后一行的有效方法?
【腾讯云】亏本大甩卖,服务器4核16G 1年370元(带宽12M,系统盘120GB SSD盘,月流量2000GB)!!!!!!
云产品 配置 价格
服务器 1核2G,带宽5M,系统盘50GB SSD盘,月流量500GB 38元/年
MySQL 1核1G 19元/年
服务器 16核32G,带宽18M,系统盘250GB SSD盘,月流量5000GB 1197元/年
点我进入腾讯云,查看更多详情

Is there an efficient way to replace the last line from a file?

I need this for log files, to have this kind of line:

21:00:00 - Info - Count: 3

Be replaced with this:

21:00:35 - Info - Count: 4

And so on.. So it looks cool in a tail -f

The problem is that log files can get really big, and I don't want them being loaded into the memory everytime I want to replace the last line.

Anyway, if loading the whole file was the only way, how would you go about it, having in mind that there are other scripts appending data to the same file, simultaneously? I guess I have to lock it or something. I never used that because I just use file_put_contents with the FILE_APPEND option.

#0

If you want an efficient way, then read in a block of content from the end, then truncate on the last found \n. That's not pretty, but works:

$fn = "LICENSE";
$size = filesize($fn);
$block = 4096;
$trunc = max($size - $block, 0);

$f = fopen($fn, "c+");
if (flock($f, LOCK_EX)) {
   fseek($f, $trunc);
   $bin = rtrim(fread($f, $block), "\n");
   if ($r = strrpos($bin, "\n")) {
      ftruncate($f, $trunc + $r + 1);
   }
}
fclose($f);   // clears LOCK_EX

推荐文章

PHP中的Page.Title等价物

PHP中的Page.Title等价物

推荐文章

Saxon Xslt处理器错误

Saxon Xslt处理器错误

推荐文章

Android数据库创建错误-

Android数据库创建错误-

推荐文章

在VS2008中开发的应用程序,宿主是godaddy.net4.0条制造问题

在VS2008中开发的应用程序,宿主是godaddy.net4.0条制造问题

推荐文章

从file到arraylist,从arraylist到array[]

从file到arraylist,从arraylist到array[]

推荐文章

使用openpyxl编辑Excel2007文件(.xlsx)而不更改其自身的样式?

使用openpyxl编辑Excel2007文件(.xlsx)而不更改其自身的样式?

推荐文章

如果没有选中单选按钮,如何不提交表单

如果没有选中单选按钮,如何不提交表单

推荐文章

WebOS虚拟现实问题

WebOS虚拟现实问题

推荐文章

Regex:匹配,但在注释中不匹配

Regex:匹配,但在注释中不匹配

推荐文章

iPad拆分视图开发

iPad拆分视图开发

推荐文章

SELECT DISTINCT和SELECT UNIQUE之间的区别

SELECT DISTINCT和SELECT UNIQUE之间的区别

推荐文章

C目标下的字符分配问题

C目标下的字符分配问题

推荐文章

如何使用AnythingSlider在嵌套滑块上获得平滑过渡?

如何使用AnythingSlider在嵌套滑块上获得平滑过渡?

推荐文章

MVC ActionMethod控制器事件?

MVC ActionMethod控制器事件?

推荐文章

openssl中是否有从给定字符串派生密钥的API

openssl中是否有从给定字符串派生密钥的API

推荐文章

grailspringsecurity:在双重角色之间切换

grailspringsecurity:在双重角色之间切换