Apache + PHP 与 mod_php 无超时

Apache + PHP 与 mod_php 无超时

我实际上正在使用 PHP 8.2(mod_php)和 debian 11.2 的 Apache 服务器 2.4 上工作

最近我发送了一个超过 100 秒的 HTTP 请求,没有超时。此请求执行了一个很大的 MySQL 请求。

我使用以下配置配置了 Apache ( /etc/apache2/apache2.conf)

Timeout 10

我使用以下方式配置了 PHP ini( /etc/php/8.2/apache2/php.ini)

max_execution_time = 10
max_input_time = 10

但我的请求花费了超过10秒。

来自 PHP 文档https://www.php.net/manual/en/configuration.changes.php

我已经php_value在我的虚拟主机中添加

<VirtualHost *:8088>
  DocumentRoot /var/www/public
  <Directory /var/www/public>
    AllowOverride All
    Require all granted
    Options Indexes FollowSymLinks

    php_value max_execution_time 10
  </Directory>
</VirtualHost>

即使在以下情况下配置良好,结果也是一样的phpinfo()

所以我的问题是:如何处理 Apache 和 mod_php 的超时?

谢谢

答案1

我找到了我的答案。

问题不是出在 Apache 或 PHP 上,而是出在 MySQL 上。

对于 Apache,我们有与Timeout 服务器等待客户端请求超时相对应的https://httpd.apache.org/docs/2.4/mod/mod_reqtimeout.html

对于 PHP,max_execution_time表示 PHP 脚本执行的秒数,仅限 PHP。耗时一小时的 MySQL 请求不计入 max_execution_time。

因此,在 MySQL max_execution_time5.7 版中https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_execution_time

就我而言,如果我有一个需要 1 小时的 SQL 请求和一个需要 5 秒的 PHP 脚本,那么我就不会超时。

相关内容