我有以下PHP代码。我希望能够从停止的点继续读取文本文件,文本文件超过90mb。
是否可以从脚本停止运行的位置继续读取?
$in = fopen('email.txt','r');
while($kw = trim(fgets($in))) {
//my code
}
答案 0 :(得分:1)
不,如果不经常保存当前状态,这是不可能的。
但是,不应该这样做,而应该更好地尝试修复导致脚本停止的原因。 set_time_limit(0);
和ignore_user_abort(true);
很可能会阻止您的脚本在运行时停止。
如果您做希望能够从某个位置继续,请使用ftell($in)
获取该位置并将其不时存储在文件/数据库中。启动脚本时,检查是否有存储位置,然后在打开文件后只需fseek($in, $offset);
。
如果脚本是从浏览器执行的,并且可能需要足够的时间来中止,您还可以考虑将其拆分为块并使用包含参数的重定向干净地终止脚本。所以你的脚本会处理例如1000行,然后重新启动,偏移量为1000,以处理接下来的1000行,依此类推。