使用fgetcsv
,我能否以某种方式进行破坏性读取,其中我已读取和处理的行将被丢弃,所以如果我没有在第一遍中通过整个文件,我可以回来并从我之前离开的地方继续the script timed out
?
额外细节:
我从供应商那里获得了一个 200mb .gz 文件的每日产品提要。当我解压文件时,它变成了一个 1.5gb 的 .csv,有近 500,000 行和 20 - 25 个字段。我需要将此信息读入 MySQL 数据库,最好使用 PHP,这样我就可以安排 CRON 每天在我的网络托管服务提供商处运行脚本。
我在服务器上设置了一个硬超时,由托管服务提供商设置为 180 秒,并且任何单个脚本的最大内存使用限制为 128mb。我无法更改这些限制。
我的想法是使用 fgetcsv 函数从 .csv 中获取信息,但由于 3 分钟超时,我预计必须在文件中多次传递,我认为削减文件会很好当我处理它时,我不需要花费周期跳过在前一次传递中已经处理过的行。