PHP 中的 CURL 是不是支持 SPDY?

Posted

技术标签:

【中文标题】PHP 中的 CURL 是不是支持 SPDY?【英文标题】:Does CURL in PHP support SPDY?PHP 中的 CURL 是否支持 SPDY? 【发布时间】:2015-02-20 19:31:19 【问题描述】:

我在 php 中使用 cURL 连接到不同的 API,我知道这些 API 使用来自 Google 的新协议 SPDY。

但我不确定默认情况下 PHP cURL 是否支持 SPDY。如果不是,有没有办法配置它以支持 SPDY?

【问题讨论】:

php.net/manual/en/intro.curl.php 有一个支持的协议列表。由于libcurl还不支持SPDY,所以没办法添加。 那太糟糕了。会很快支持吗? 计划支持 - github.com/bagder/curl/blob/master/docs/ROADMAP.md - 但没有时间表。 【参考方案1】:

在我使用 PHP 5.5.19 和 curl 7.39.0 的系统上,答案是否定的。 您可以通过启用“自动”编码来检查您的 curl 支持什么,使 curl 列出所有支持的编码到服务器(通过 CURLOPT_ENCODING->empty 字符串启用自动),然后检查 curl 发送的标头,如下所示:

<?php
    if(array_key_exists("curlcall",$_GET))
    if(is_callable("http_get_request_headers"))
    var_dump(http_get_request_headers());       
    elseif(is_callable("apache_request_headers"))
        var_dump(apache_request_headers());
     else 
        throw new Exception("unsupported enviroment (both http_get_request_headers and apache_request_headers missing!)");
    
     else 
    $ch=curl_init("http://127.0.0.1/a.php?curlcall");
    curl_setopt($ch,CURLOPT_ENCODING,"");
    curl_exec($ch);
    

在我的系统上,我得到这个输出:

array(3)  ["Host"]=> string(9) "127.0.0.1" ["Accept"]=> string(3) "*/*" 
["Accept-Encoding"]=> string(13) "deflate, gzip" 

表示支持 deflate 和 gzip(以及默认值 - 无编码/纯文本)(尚无 SPDY 支持)

【讨论】:

以上是关于PHP 中的 CURL 是不是支持 SPDY?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测服务器是不是正在使用 SPDY

测试你的浏览器是不是支持 SPDY

Android Webview 是不是支持 Spdy V3?

如何使用 curl 和 php 连接到安全 (https) 代理?

PHP中的cURL库

如果服务器实现 spdy/3 而浏览器只支持 spdy/2 会发生啥?