【发布时间】:2015-12-17 09:27:21
【问题描述】:
在通过 https 访问某些资源时,我遇到了 PHP 的 file_get_contents 挂起 60 秒的问题。
我不确定是客户端问题还是服务器端问题。
在客户端
在命令行上工作:
$ URL="https://example.com/some/path"
$ wget "$URL" -O /dev/null -q # takes a few milliseconds
$ curl "$URL" >/dev/null # takes a few milliseconds
$ php -r 'file_get_contents("'"$URL"'")' # takes 61s!
在服务器上
立即将一行写入 Apache (2.4) 访问日志以获得正确的 SSL vhost,并返回 200(成功)响应。这是一个令人困惑的时间表:
- 0s php 的 file_get_contents 在客户端触发
- 0.2s 服务器的 apache 访问日志记录成功 (200)。
- ???谁知道这里发生了什么???
- 60.2s客户端收到文件。
从 Ubuntu 14.04 和 Debian 8 客户端测试。有问题的资源都在 Debian 8 服务器上,运行 Apache 2.4 和 ITK worker 和 PHP 5.6。我已经在关闭防火墙的情况下尝试过(默认接受策略),所以不是这样。 NB。服务器禁用了 IPv6,这可能与我注意到当某些东西首先尝试 IPv6 时出现这样的超时有关。但是被访问的主机没有 AAAA 记录,并且 apache 日志显示 (a) SSL 建立成功,并且 (b) 请求有效并被接收。
【问题讨论】:
标签: php apache file-get-contents