暂停 - 继续使用 php 读取大型文本文件


Pause-Continue reading large text file with php

我有下面的PHP代码。我希望能够从文本文件停止的点继续读取文本文件,并且文本文件超过 90mb。

是否可以从脚本停止运行开始继续读取?

$in = fopen('email.txt','r');
while($kw = trim(fgets($in))) {
    //my code
}

不,如果不不时保存当前状态,这并不容易实现。

但是,与其这样做,不如尝试修复导致脚本停止的任何原因。 set_time_limit(0);ignore_user_abort(true);很可能会阻止脚本在运行时停止。

如果您确实希望能够从某个位置继续,请使用ftell($in)获取该位置并不时将其存储在文件/数据库中。启动脚本时,请检查是否有存储的位置,然后在打开文件后简单地fseek($in, $offset);

如果脚本是从浏览器执行的,并且需要足够的时间才能中止,您还可以考虑将其拆分为块,并使用包含参数的重定向干净地终止脚本。因此,您的脚本将处理例如 1000 行,然后以 1000 的偏移量重新启动以处理接下来的 1000 行,依此类推。