我正在开发一个PHP / MySQL应用程序,需要处理CSV文件,但脚本总是在整个过程完成之前停止。
如何优化系统以最终解决此问题?
注意我不会为这个系统做网站主办,所以我无法延长PHP的最长执行时间。
由于
答案 0 :(得分:2)
一些想法。
将文件分解为您知道可以一次性处理的行集。启动多个流程。
分解工作,以便可以多次处理。
答案 1 :(得分:1)
结帐LOAD DATA INFILE。这是一个纯粹的MySQL解决方案。
您可以使用PHP脚本开始/执行此SQL,该脚本可在脚本停止/超时后继续运行。或者,更好的是,安排一个cron工作。
答案 2 :(得分:0)
您无需控制配置文件即可延长最长执行时间。您仍然可以在代码上使用set_time_limit(0)使其运行到最后。唯一的问题是如果你从浏览器调用它。浏览器可能会超时并使页面孤立。我有一个生成需要很长时间的CSV文件的站点,我通过使用缓冲区刷新结束与浏览器的会话,并在作业完成时发送电子邮件通知,让进程在后台运行。
答案 3 :(得分:0)
建议一:插入其中一行后,将其从csv文件中删除
建议二:用最后插入的csv行更新文件或mysql,然后在下一行中跳过该行之前的所有其他条目。
此外,您可以为每次执行添加30秒的限制或每次执行添加100/1000 / X行(这在脚本终止之前最佳)。这对两个建议都有效。