Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend“U Http”客户端:如何;不要下载大文件”;_Php_Zend Framework_Frameworks_Zend Http Client - Fatal编程技术网

Php Zend“U Http”客户端:如何;不要下载大文件”;

Php Zend“U Http”客户端:如何;不要下载大文件”;,php,zend-framework,frameworks,zend-http-client,Php,Zend Framework,Frameworks,Zend Http Client,我有使用Zend_Http_客户端的PHP脚本 脚本可以做两件事: “扩展”缩短的URL+获取URL的mime类型 获取文本/HTML URL的HTML内容 我使用以下简单代码: $client = new Zend_Http_Client($url); $response = $client->request('GET'); $headers = $response->getHeaders(); $body = $response->getBody(); 例如,URL包

我有使用Zend_Http_客户端的PHP脚本

脚本可以做两件事:

  • “扩展”缩短的URL+获取URL的mime类型
  • 获取文本/HTML URL的HTML内容
我使用以下简单代码:

$client = new Zend_Http_Client($url);
$response = $client->request('GET');
$headers = $response->getHeaders();
$body = $response->getBody();
例如,URL包含100Mb MP3文件的情况除外。我只需要HTML内容,不需要MP3。所以我想将Zend_Http_客户端配置为“不要下载超过2Mb的文件”。可能吗

是的,我可以提出两个请求——第一个请求获取URL的MIME,第二个请求获取HTML,如果MIME=text/HTML,但是提出两个不同的请求太费钱了


所以,问题是:当已经下载的内容重量超过2Mb时,如何检查下载内容大小并停止下载而不出错?

如果遵循协议,最佳做法是首先发送HEAD请求,检查预期的内容类型和大小,然后发送GET请求。但是,这可能对您来说还不够,并且可能不是所有服务器都支持


或者,您可以使用流响应支持在正文实际下载之前中止下载。参见示例#11 at

如果您使用
HEAD
而不是
GET
它将大大降低成本。