作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将数据从文本文件解析到 mysql 数据库。问题是,在解析了一定数量的记录(从 250,000 到 380,000 之间的任意位置)后,我得到了 fatal error :超过 30 秒的最大执行时间
。我可以通过将文件拆分成更小的文件来解决这个问题,但这很痛苦,我想找到一种方法来欺骗 PHP 处理整个文件。
有没有办法说服 PHP 运行冗长的进程,即使我无权访问 php.ini 并且无法更改我的最大执行时间?
顺便说一下,here's my parsing script .也许我的 php 代码有问题。
最佳答案
您可能会发现可以通过一次插入多行来提高性能。试试这个语法:
INSERT INTO
tbl_name (a,b,c)
VALUES(1,2,3),(4,5,6),(7,8,9)
;
您应该分组在一起的行数最好通过实验确定。可能是您在一个语句中添加的越多,它就会越快,但如果您没有打开自动提交,同样可能会很慢。
正如有人在评论中提到的,一次放入太多可能会耗尽 CPU,并引起服务器管理员的注意。如果这是您需要在主机上小心处理的事情,请一次尝试 200,然后在迭代之间进行一个小的 usleep
。
同样值得查看与您的数据库的连接 - 这是在同一台服务器上,还是在另一台服务器上?连接速度可能很慢。添加一些计时,例如,插入 5,000 行需要多长时间,然后尝试看看如何减少它。
这是 manual reference对于插入
;请注意,这是非标准 SQL,不适用于其他数据库引擎。
关于php - 当最大执行时间为 30 秒时,如何在 php 中执行冗长的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18882490/
我是一名优秀的程序员,十分优秀!