Zend_Http_Client:如何"do not download large files"



我有使用Zend_Http_Client的PHP脚本。

脚本做两件事:

  • "扩展"缩短的URL+获取mime类型的URL
  • 获取text/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_Client配置为"不下载超过2Mb的文件"。有可能吗?

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

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

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

或者,您可以使用流响应支持在实际下载正文之前中止下载。参见示例#11http://framework.zend.com/manual/1.12/en/zend.http.client.advanced.html#zend.http.client.streaming

最新更新