私は以下の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行を処理します。