phpMyAdmin 超时不符合 PHP.ini max_execution_time

phpMyAdmin timeout not respecting PHP.ini max_execution_time

尝试使用 this method 将 150MB .sql.zip 文件导入 WAMP phpMyAdmin(将导入文件保存在 c:/wamp/sql 中,并编辑 C:\wamp\apps\phpmyadmin5.0.2\config.inc.php在末尾包含 $cfg['UploadDir'] = 'C:\wamp\sql';,然后在导入过程中选择导入文件保存到 C:\wamp\sql

但是,我在 phpMyAdmin 中不断收到超时错误,建议重新运行 导入选择相同的文件,但是在第 2 天 运行 我总是收到 SQL 错误.

因此,我在 Wamp 的 PHP.ini 中设置了 max_execution_time = 4500(4500 秒等于 75 分钟)并重新启动了 Apache 和 MySQL。

但是,在使用相同的导入过程时出现相同的超时错误。大约 5 分钟后出现超时错误。

为什么超时错误发生在5分钟之内,而不是PHP.ini max_execution_time = 4500设置的时间内?

编辑

phpinfo 说 localhost 有:

memory_limit    200M
post_max_size   200M
upload_max_filesize 200M
max_execution_time  4500

我继续收到发生超时的消息,并重新运行 使用同一文件再次导入,但是在第 2 天 运行,我收到错误:

错误 静态分析:

2 errors were found during analysis.

Unexpected beginning of statement. (near "RT" at position 0)
Unrecognized statement type. (near "INTO" at position 3)

SQL query: Copy

RT INTO `cache_menu` 

看起来 SQL INSERT 命令正在被进程切断。

如何安全地将 SQL 分成更小的块?

除了最大执行时间,PHP 还将限制 post 最大大小、内存限制、上传最大文件大小。 (都可以关联到数据导入的上传文件操作)。如果其中任何一个达到允许的限制,将导致执行失败并抛出超时错误

因此您可以设置/更改以下内容

ini_set('memory_limit', '40M'); 
ini_set('max_execution_time', 80000); 
ini_set('post_max_size', '40M'); 
ini_set('upload_max_filesize', '40M'); 

我不确定这是否适合遇到相同问题的人,但我的解决方法是使用 SQL Dump File Splitter

将大 SQL 文件拆分成较小的文件