我安装了 WordPress,并使用 Web 表单在我的网站上上传图片。Web 表单允许最终用户一次上传多个文件。
问题是我的一个用户遇到了这个错误:
致命错误:/home/ 中的最大执行时间已超过 30 秒帐户/public_html/wp-includes/media.php 第 258 行
那么最佳调优是什么max_execution_time
?现在你可以看到三十秒。有什么想法吗?
如果我将其设置成一个非常高的值(例如 600),这会影响我的服务器性能吗?
笔记:用户尝试上传两个文件,大小分别为2.96MB和2.9MB。
诚挚问候 Merianos Nikos
答案1
我从错误消息中的路径猜测这是一个 Unix/Linux 系统(MSWindows 处理超时非常不同)。
虽然带宽(和延迟!)对处理请求所需的时间有很大影响,但 PHP 时钟仅在调用 PHP 解释器时启动 - 这要等到 Web 服务器收到完整的请求后才会启动 - 即 PHP 执行时间和超时应该与 Web 服务器处理请求所需的时间无关。
PHP 中有一个超时设置,用于确定从 Web 服务器接收数据需要多长时间 -最大输入时间- 而且它已经被报告了那当超过此限制时,它会报告 最大执行时间 超出!。
所以....假设一个 0 延迟网络...
00:00 用户开始上传,apache 超时时钟启动(但会随着新数据包的到达而不断重置)
00:10 Apache 接收请求完毕,请求移交给 PHP,max_input_time 时钟启动
00:11 PHP 已读取所有输入,max_input_time 时钟停止,max_execution_time 时钟启动,脚本已执行
现在,在 Unix 机器上,max_execution 时钟仅有的PHP 执行时出现勾选,则问题出在 PHP 的性能/PHP 脚本的性能上。
是的,您可以增加最大执行时间,而不会对其他地方产生很大影响(尽管通过 ini_set() / set_time_limit() 逐个脚本进行设置比全局设置更简洁)。但请确保您使用的是操作码缓存,如果 php 脚本尝试解析数据,请留意数据/解析器问题。
答案2
设置的目的有两个max_execution_time
:
- 保护您免受不良代码(例如无限循环)的侵害。
- 在猜测客户端已经放弃后,停止 PHP 浪费处理。
将其设置为高值只会影响表现如果您有执行上述两件事之一的脚本。
在更改此时间之前,请检查您的错误日志以查看超出此时间的频率(如果有的话)。
您可以通过在ini_set()
需要更多时间的 PHP 代码中选择性地更改它。
答案3
正如 @Ladadadada 所说,max_execution_time
设置惯于影响服务器性能。否则,如果你不想设置太高的值,我个人建议upload_max_filesize
环境。
了解服务器带宽并测试几次上传后,您将能够找到平均上传速率(降低该速率以照顾带宽较低的用户)。这将有助于设置合理的 max_execution_time
价值。