我正在处理一个包含 35,000 行内容的 CSV 上传文件,我正在尝试想办法在“X”行开始解析 CSV 文件。我一直在刷新页面并保存我最后一次使用的行,这样它就可以解决我在浏览器中遇到的超时问题。现在,我只需要知道如何在我离开的那一行开始我的 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 文件的方法,这将是我的首选方法,但我找不到任何东西。任何帮助都是极好的。