【问题标题】:Apache Webserver : What happens to requests already sent in loop after The connection has timed outApache Webserver:连接超时后已经循环发送的请求会发生什么
【发布时间】:2014-06-27 07:38:45
【问题描述】:

我编写了一个脚本来循环创建图像,循环大小几乎是 10K。所以在一段时间后会发生什么,我的浏览器显示“连接已超时”。 但我仍然可以看到正在特定文件夹中创建图像,即 Apache 仍在处理我的请求。

关注点是在我们得到 The connection has timed out 之后,循环发送的所有 HTTP Aapche 服务器请求会发生什么。

我真的很想详细了解 Apache Queue 系统。

【问题讨论】:

  • 我很困惑“在我们得到连接超时后,所有在循环中发送的 HTTP Aapche 服务器请求会发生什么”你能说得更清楚一点吗?

标签: php apache queue


【解决方案1】:

您可能正在寻找ignore_user_abort 指令。有更多的超时。 Apache 请求超时(Apache 让用户等待第一个数据的时间)。这可能与 PHP 中的 max_execution_time 不同。如果启用了忽略用户中止,则两个计时器都会启动。一段时间后,Apache 超时并发回响应。后台脚本仍然运行,直到它完成或达到 max_execution_time。如果您禁用忽略用户中止,则当 Apache 向用户发送超时时脚本将停止。

【讨论】:

  • ini_set('memory_limit', '-1');忽略用户中止(真); set_time_limit(0);
  • ignore_user_abort 没有帮助。即使在“超时错误”并关闭浏览器之后,所有已排队的 HTTP 请求仍在执行。
  • 完全正确。这就是ignore_user_abort(true) 的用途。
  • ignore_user_abort(false);set_time_limit($yourApacheRequestTimeout) 应该可以解决问题
猜你喜欢
  • 2020-01-16
  • 1970-01-01
  • 2020-09-10
  • 2018-03-17
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多