我的服务器上同时安装了 PHP 7.0 和 PHP 5.6(这是一个具有大量资源的专用服务器),通过 PHP 7 发出的出站请求非常慢,但通过 PHP 5 发出时则不会。在 PHP 命令行解释器中使用 cURL 进行测试时,使用 PHP 5 需要 1.3 秒的请求(针对 33MB 文件)在 PHP 7 上执行时需要 16.9 秒(我能够可靠地重现这些结果 - 这不仅仅是一次性的峰值)。
该时间是实际下载所花费的时间,而不是建立连接所花费的时间 - 根据curl_getinfo
,虽然所有时间(名称查找、连接、开始传输时间等)在 PHP 7 和 PHP 5 中大约高 10 倍,但它们仍然完全在一秒内,因此绝大多数时间都花在实际下载文件上;当下载因 cURL 超时而中断时,错误消息(指示接收的字节数)大致与执行所花费的时间成正比。这使我得出这样的结论:网络速度一定以某种方式受到了限制,但我想不出什么会影响 PHP 7(CLI 和 FPM),而不影响 PHP 5。
受此影响的不仅仅是 cURL —— 使用手动套接字连接尝试相同的请求也会非常慢(实际上明显比 cURL 慢,但这可能是因为 cURL 可以处理压缩而套接字连接不能)。
该服务器正在运行 Debian Jessie。