【问题标题】:Long PHP Requests Getting Dropped长 PHP 请求被丢弃
【发布时间】:2016-05-13 11:59:42
【问题描述】:

我设置了我的 PHP 应用程序的本地副本,该应用程序在 Symfony 框架上运行。由于与 C++ 服务器的套接字通信,它经常处理可能需要一个小时才能完成的请求。我的远程服务器可以很好地处理这些,但我的本地服务器似乎正在丢弃请求,根本没有给出响应。

我已经在我的 php.ini 文件中设置了配置指令max_execution_time。是否有任何其他设置导致此行为?

【问题讨论】:

  • 您是否也检查了 C++ 的设置?
  • 是的,因为C++服务器是远程运行的,所以设置是一样的。远程 PHP 服务器与它配合得很好,所以我怀疑本地 PHP 配置是问题。
  • 可能是 default_socket_timeout ? php.net/manual/en/…
  • 好主意!我会试试看它是否有效。
  • 不幸的是,这不起作用。 :(

标签: php symfony timeout


【解决方案1】:

PHP 不是为长时间运行的请求而设计的。假设生成一些输出并将其返回给客户端。

我建议你不要在http请求期间尝试长时间处理,而是返回一个202 Accepted响应并将处理委托给后台进程。

您可以为此利用消息队列。 http请求会将消息添加到队列中,并且会有一组消费者等待消息并处理它们。

【讨论】:

  • 我的远程服务器可以持续可靠地处理那些长时间运行的请求而不会出现任何错误。我只希望我的本地实例以相同的方式运行。理想情况下,我会按照您的建议进行更改,但如果它已经在生产中工作,我没有时间进行更改。
猜你喜欢
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 2021-10-27
  • 2013-12-20
  • 1970-01-01
  • 2020-05-30
  • 2015-05-23
  • 2018-10-04
相关资源
最近更新 更多