PHP使用file_put_contents记录访客IP时如何限制日志行数最多为200行
修改后可实现最多200行日志限制的代码
$today = date("F j, Y, g:i:s a"); $ip = $_SERVER['REMOTE_ADDR']; // 生成新的访问记录行 $new_log = "$ip\twas here\t$today\n"; // 读取原有日志,文件不存在时默认返回空内容 $old_log = file_exists('ip.txt') ? file_get_contents('ip.txt') : ''; // 新记录拼在最前面,和原有日志合并 $full_log = $new_log . $old_log; // 按换行符拆分日志为行数组,过滤掉无效空行 $log_lines = array_filter(explode("\n", $full_log)); // 只保留最新的前200条记录 $log_lines = array_slice($log_lines, 0, 200); // 拼接回字符串写入文件 file_put_contents('ip.txt', implode("\n", $log_lines));
实现说明
- 完全保留了你原有代码的记录逻辑,最新访问记录仍然排在最顶部,方便查阅
- 新增了文件存在判断,避免首次运行没有ip.txt文件时抛出PHP警告
- 拆分日志为行数组后截取前200条,超出的历史旧记录会被自动丢弃,始终保持文件最多200行记录
- 增加了空行过滤逻辑,避免换行符拆分时产生的无效空行占用计数名额
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

