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?的主要内容,如果未能解决你的问题,请参考以下文章
Android Webview 是不是支持 Spdy V3?