file - php关于文件操作-读取一行处理一行之后把该行删除

查看:245
本文介绍了file - php关于文件操作-读取一行处理一行之后把该行删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

1.现在有一个300M的文件 需要把里面的数据一行一行读取出来,每行进行处理(无法做成幂等)。但是怕处理过程中系统挂掉,不知道该从哪一行再重新读取,怕挂之前已经处理的行再次处理一遍
2.现在想到的方案是 读取一行处理一行之后把该行删除,即时程序挂掉,再次执行从开始读也不会读取到原来已经处理的行
3.看一下各位大牛有没有好的解决方案谢谢

//想读取一行删除一行 该如何操作或者有更好的解决方案 避免同一行执行两次

$fp = fopen($fileName, "r");
if (!$fp) {
    return -1;
}
$max = 40960; //40k

while (!feof($fp)) {
    $line = fgets($fp, $max);
    }

现在的处理方案是把处理到多少行了进行文件存储,避免崩盘之后从头开始再执行,本来打算存redis的,但是就在一台机器上执行,存文件吧

解决方案

我觉得你可以换个方式来实现你要的效果:你可以读取一行,处理完这行后,在这行后加个特殊的符号。循环遍历每行就能知道哪些行是被处理过的。假如你的程序挂掉,再次执行的时候,直接搜索那个特殊符号最后一次出现的地方。然后这个地方的下一行就是你该开始执行的地方了。

这篇关于file - php关于文件操作-读取一行处理一行之后把该行删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆