我创建了一个php脚本,可以读取数千个数据的excel表格。通过插入查询将所有数据添加到MySQL数据库中。现在的问题是,excel表中的数据已经从数千个增加到数百万个。所以现在运行此脚本时发生超时。 我想知道在没有超时的情况下运行所有查询的最佳解决方案是什么?
还有一件事,我首先在网络托管上使用了这个脚本,它在很少的记录上结束了超时,所以后来我在我的本地WAMP服务器上执行了这个脚本。它确实存储了比托管更多的记录,但它仍然超时。因此,如果解决方案可以在线和&本地服务器,这将是最好的。
答案 0 :(得分:2)
我在我的脚本中使用了这个:
ini_set("memory_limit", "-1");
set_time_limit(0);
答案 1 :(得分:1)
您可以随时尝试设置:
ini_set('memory_limit', '-1');
[docs]
或者,更多地使用SQL,或设置cron job以更短的时间间隔启动脚本,直到更新完成...
另外see here,如果您正在运行INSERT,以帮助提高SQL效率,还可以查看LOAD DATA INFILE
:
答案 2 :(得分:1)
如果您有数百万行,则可能使用的不是正确的工具。
如果可能,我建议使用LOAD DATA INFILE
(docs)函数,它们可以直接接受csv文件。这样你就可以完全跳过PHP层进行插入。如果您仍然需要在将文件添加到数据库之前处理该文件,您可以尝试将数据转换为所需的格式,保存到csv然后使用上面提到的函数。