35,000行の処理が行われているCSVアップロードに取り組んでおり、CSVファイルの解析を「X」行から開始する方法を考えています。ページを更新し、毎回最後の行を保存して、ブラウザで発生していたタイムアウトの問題を修正しました。ここで、中断した行からCSVファイルを開始する方法を知る必要があります。
while(($data = fgetcsv($handle, 0, ",")) !== false) {
if($i > 2000) { break; }
//start parsing here
$i++
}
$_SESSION['lastLine'] = $i;
$_SESSION['filepath'] = $filepath;
//resend headers
ファイルパスは一時フォルダーにアップロードされており、再度アクセスできるため、セッションとしても保存します。ですから、初めてアップロードするときは、2000行すべてを完全に満足しています。ヘッダーがリセットされ、プロセスが再開されますが、$ _ SESSION ['lastline']が2001になっているため、コードが壊れています(これは問題ありません)。私が理解する必要があるのは、2001行目で解析を開始し、4000行目で再びブレークする方法です。これは、35,000行すべてが完了するまで続きます。
構文解析の前にbreakステートメントを設定して次のように言うことを考えていました。
if($i < $_SESSION['lastLine']) { $i++; }
if($i > $_SESSION['lastLine'] + 2000) { break; }
私の問題は、35,000行のCSVを実行すると、解析が開始される前に、最後の10回程度の実行でi++ループを数千回実行する必要があることを意味します。「X」行からCSVファイルを開始する方法をいくつか探しましたが、これは私の好みの方法ですが、何も見つかりませんでした。どんな助けでも素晴らしいでしょう。