phpMyAdmin出现504网关超时怎么办
当尝试从 phpMyAdmin 导入 SQL 时,您可能会收到 504 超时错误。
这次,我们将为那些希望在这种情况下从 phpMyAdmin 导入的人介绍一种解决方法。
解决方案1.文件大小问题
/etc/php.ini中编辑以下 3 项
- 最大可上传文件大小
upload_max_filesize = 512M - 可POST的数据最大值
post_max_size = 512M - 脚本可以分配的最大内存
memory_limit = 512M
此时请注意,上述数值有如下关系。
upload_max_filesize < post_max_size < 内存限制
请注意,根据 Web 中间件的不同,反映 php.ini 中设置的方式也有所不同!
- Apache:重新启动后反映
- nginx:重新加载php-fpm设置即可生效
$ /etc/init.d/php-fpm 重新加载
如何检查是否反映
如果在phpMyAdmin导入的文件选择中写入以下内容就OK了!
(最大:512MiB)
解决方案2. 时间是个问题。
这是延长时间直至超时的解决方法。
php.ini 中有一个名为 max_execution_time 的项目。让我们改变这个值。
max_execution_time 设置脚本被解析器强制终止之前的时间 (*)。
此设置是为了防止长脚本给服务器带来负载。
单位是秒,设置为0表示没有时间限制。
(*解析器:分析脚本语法并将其转换为程序可以处理的数据结构集合的程序)参考:
http://php.net/manual/ja/info.configuration.php#ini.max-execution-time
http://e-words.jp/w/%E3%83%91%E3%83% BC%E3%82%B5.html
设置示例
*我认为不仅设置 max_execution_time 还设置其他设置会更好。
- php.ini
最大执行时间 = 300 - php-fpm.conf
request_terminate_timeout 300 - nginx.conf
fastcgi_read_timeout 300
request_terminate_timeout是处理单个请求的超时设置。过了这个时间,工作进程就会被杀死。 如果“max_execution_time”ini 选项由于某种原因无法停止脚本运行,则使用此选项。 值“0”表示“关闭”。可用单位:s(秒)(默认)、m(分钟)、h(小时)或 d(天),默认值:0
参考:
http://php.net/manual/ja/install.fpm.configuration.php#request-terminate-timeoutfastcgi_read_timeout 设置 FastCGI 响应读取超时。 它决定了等待 nginx 请求响应的时间。 60(秒)是默认值。
参考:
http://server-setting.info/centos/nginx-fastcgi-cache.html
设置的反映
对于Apache,需要重新启动以使设置生效。
$ 服务 httpd 重新启动
对于 nginx,设置是使用 reload settings 命令反映的。
$ 服务 php-fpm 重新加载 $ 服务 nginx 重新加载
顺便一提
如果您在进行这些设置后遇到以下错误,请检查您的 phpMyAdmin 设置。
超过 300 秒的最大执行时间...
更改phpMyAdmin配置文件(/path/to/phpmyadmin/libraries/config.default.php)中的以下值。
/** * 最大执行时间(以秒为单位)(0 表示无限制) * * @global integer $cfg['ExecTimeLimit'] */ $cfg['ExecTimeLimit'] = 300;
单位是秒,0表示无限制。
另外,max_execution_time只是php脚本的处理时间,不包括访问DB时直到返回响应的等待时间。
如果超时是由于线路速度造成的,请增加 mysql.connect_timeout。
mysql.connect_timeout
连接有效时间(单位:秒)。在Linux上,该有效时间也用作等待服务器第一次响应的时间。
额外的
这可以通过更改数据更改方式而不更改设置来实现。
删除数据的过程似乎很繁重,因此
如果要删除大量数据,使用 truncate 全部删除然后稍后仅重新插入必要的数据似乎更快。