使用PHP MYSQL处理大型CSV文件


Processing Large CSV files using PHP MYSQL

我正在开发一个PHP/MMySQL应用程序,该应用程序需要处理CSV文件,但脚本总是在整个过程完成之前停止。

如何优化系统以最终处理此问题?

注意,我不会为这个系统做网络托管,所以我不能延长PHP的最长执行时间。

感谢

几个想法。

  1. 将文件分解为一个行集,您知道您可以在一次拍摄中处理该行集。启动多个进程。

  2. 把这项工作分解,以便分几道处理。

查看加载数据信息。这是一个纯MySQL解决方案。

您可以使用PHP脚本开始/执行此SQL,该脚本可以在脚本停止/超时后继续运行。或者,更好的是,安排一个cron工作。

您不需要控制配置文件来延长最长执行时间。您仍然可以在代码中使用set_time_limit(0)使其运行到最后。唯一的问题是,如果你是从浏览器调用这个。浏览器可能会超时并使页面处于孤立状态。我有一个网站,它生成需要很长时间的CSV文件,我使用缓冲区刷新结束与浏览器的会话,并在作业完成时发送电子邮件通知,从而将进程置于后台运行。

建议一:插入其中一行后,将其从csv文件中删除

建议二:用最后插入的csv行更新文件或mysql,下次运行时跳过该行之前的所有其他条目。

此外,您可以添加每次执行30秒或每次执行100/1000/X行的限制(在脚本终止之前效果最好)。这对两个建议都有效。