我有下面的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 行,依此类推。