好的,所以我正在帮助他们的网站。他们的原始编码器认为将整个数据库放在一个数组中是一个好主意。
我循环遍历数组中的每一段数据并将其插入到我创建的新mysql表中,行插入得很好但问题是php不会让我的脚本执行超过60秒。< / p>
如何覆盖此设置?
答案 0 :(得分:4)
有一个经典的解决方案,使用set_time_limit(),它允许您设置脚本的最长执行时间(以秒为单位)。
但是,您可能希望通过一个查询插入多行或将数组转换为CSV并使用更快的LOAD DATA。
修改:示例
插入多行:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
参考:http://dev.mysql.com/doc/refman/5.1/en/insert.html
使用LOAD DATA:
LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;
答案 1 :(得分:4)
解决方案:
在php.ini中将max_execution_time
设置为0或使用set_time_limit()
在命令行运行PHP脚本。 CLI脚本的时间限制已经硬编码为0。
将数组转储到CSV文件中,然后使用LOAD DATA INFILE
使数据库导入比在循环中一次插入一行快20倍。
答案 2 :(得分:2)
您可以使用页面顶部的set_time_limit()功能,如下所示:
set_time_limit(0);
答案 3 :(得分:0)
尝试ini_set('max_execution_time', $time_in_seconds);
答案 4 :(得分:0)
如果您使用的是mysqli,我会使用multi_query来批量操作。整个事情会跑得更快。