我有很多XML-s,我使用file或file_get_content下载,但服务器管理员告诉我,通过GZIP更有效的下载。我的问题是我怎么能包括GZIP,因为我从来没有这样做过,所以这个解决方案对我来说真的是新的。使用GZIP下载文件
回答
我不明白你的问题。
你说你下载了这些文件 - 你不能单方面启用压缩客户端。
OTOH你可以控制它的服务器端 - 因为你已经把问题标记为PHP,并且它没有任何意义,您的管理员建议压缩,如果你没有控制服务器那么我认为这就是你正在谈论的。
在这种情况下,你会简单地做这样的事情:
<?php
ob_start("ob_gzhandler");
...your code for generating the XML goes here
...也许这是无关的PHP和XML文件是静态的 - 在这种情况下,你需要配置您的Web服务器以实时压缩。
除非你的意思是压缩在服务器上可用,并且你使用PHP作为客户端通过HTTP获取数据 - 在这种情况下,如果客户端提供“Accept-Encoding”请求头,服务器将只压缩数据,包括“压缩”。在这种情况下,而不是file_get_contents()函数您可以使用:
function gzip_get_contents($url)
{
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$content=curl_exec($ch);
curl_close($ch);
return $content;
}
发送你的HTTP请求中Accept-Encoding: gzip
标题,然后解压缩结果如下所示: http://de2.php.net/gzdecode
可能卷曲可以得到一个压缩文件
尝试使用它代替的file_get_contents的
编辑:测试
curl_setopt($c,CURLOPT_ENCODING,'gzip');
则:
gzdecode($responseContent);
你不应该需要做任何如果你使用卷曲解码自己。只需使用basic cURL example code,CURLOPT_ENCODING
选项设置为""
,并且它将自动请求使用gzip编码的文件(如果服务器支持它并对其进行解码)。
或者,如果你想在一个字符串,而不是在一个文件中的内容:
$ch = curl_init("http://www.example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_ENCODING, ""); // accept any supported encoding
$content = curl_exec($ch);
curl_close($ch);
我测试过这一点,它确实在下载gzip压缩格式的内容,并自动进行解码。
(另外,你应该包括一些error handling)
这对我有效。当然用curl_setopt($ ch,CURLOPT_ENCODING,“gzip”); –
- 1. FTPWebRequest:无法下载GZip文件
- 2. 下载PHP中的Gzip XML文件
- 3. PHP:加载gzip JavaScript文件
- 4. 使用crontab来gzip文件
- 5. 下载gzip文本文件的一部分
- 6. 使用C++下载文件
- 7. 使用SMB下载文件
- 8. 使用CURL下载文件
- 9. 使用Symfony2下载文件
- 10. 使用angularjs下载文件
- 11. 使用enyo下载文件
- 12. 使用WP7下载文件
- 13. 使用qwebkit下载文件
- 14. 使用JSF下载文件?
- 15. 下载文件,使用mvc2010
- 16. 使用ChromeDriver下载文件
- 17. 使用PHP下载文件
- 18. 使用sharpbox下载文件
- 19. 使用Python下载文件
- 20. 使用HtmlUnit下载文件
- 21. 使用JavaScript下载文件
- 22. 使用AFNetworking下载文件
- 23. 使用wget下载文件
- 24. 使用硒下载文件
- 25. 使用dart下载文件
- 26. 使用servlet下载文件
- 27. 使用C下载文件#
- 28. 下载使用MVC文件
- 29. 使用JSP下载文件
- 30. 使用Python下载文件
是可以的,根据[文件](http://php.net/manual/en/function.curl-setopt.php)甚至会默认这样做。 (看看'CURLOPT_ENCODING'。) –
是的!它工作得很好 – 2011-10-07 12:44:27