全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 658|回复: 7
打印 上一主题 下一主题

请教下PHP大屌

[复制链接]
跳转到指定楼层
1#
发表于 2023-8-25 12:47:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个文本文件,要求始终保留指定行数的内容,比如1万行,超过的时候就删除最前的内容。

有没有高效点的办法?
推荐
发表于 2023-8-25 13:02:48 来自手机 | 只看该作者
一万行小case,file应付的来
3#
发表于 2023-8-25 13:04:53 | 只看该作者
  1. <?php

  2. // 指定行数
  3. $lineLimit = 10000;
  4. // 原始文件路径
  5. $filePath = 'path/to/your/file.txt';

  6. // 打开原始文件和临时文件
  7. $originalFile = fopen($filePath, 'r');
  8. $tempFile = fopen('path/to/your/temp_file.txt', 'w');

  9. // 计数器
  10. $lineCount = 0;

  11. // 逐行读取原始文件
  12. while (($line = fgets($originalFile)) !== false) {
  13.     $lineCount++;

  14.     // 写入临时文件
  15.     fwrite($tempFile, $line);

  16.     // 如果超过指定行数,停止写入
  17.     if ($lineCount >= $lineLimit) {
  18.         break;
  19.     }
  20. }

  21. // 关闭文件流
  22. fclose($originalFile);
  23. fclose($tempFile);

  24. // 备份原始文件
  25. copy($filePath, 'path/to/your/backup_file.txt');

  26. // 替换原始文件
  27. rename('path/to/your/temp_file.txt', $filePath);

  28. ?>
复制代码
4#
发表于 2023-8-25 13:05:05 来自手机 | 只看该作者
这点毫秒级的处理就不用考虑性能了
5#
发表于 2023-8-25 13:13:30 | 只看该作者
写入的时候判断一下行数,超过的时候删除老的数据
6#
发表于 2023-8-25 13:31:58 来自手机 | 只看该作者
这种用 gpt 都能写
7#
发表于 2023-8-25 13:38:48 | 只看该作者
用队列实现
8#
发表于 2023-8-25 13:40:47 | 只看该作者
不考虑并发的情况下可以用file,最好还是直接redis,没几行代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-10-18 15:00 , Processed in 0.082742 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表