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