当前位置:  编程技术>php
本页文章导读:
    ▪php中gzip对文件或字符串解压缩的例子      本以为,对于使用gzip压缩后传输的网页,本来应该只要发送一个http头 Accept-Encoding: identity或干脆不发送这个头等,即可使目标站返回未经gzip压缩的页面。 实际情况却是:目标站无视客户端.........
    ▪php中开启 Zlib (GZIP) 压缩优化的方法      在服务器中实现gzip压缩的方法有多种: 1,Nginx 的 GZIP 配置 2,Apache 的 mod_deflate.so  模块 3,各种 PHP 程序中通过 PHP自身 实现压缩。 不过,php本身就有2种实现方法,一种是开启zlib.output_comp.........
    ▪整站开启php zlib(gzip)压缩输出功能的方法      我们知道,php主要通过ob_gzhandler内置函数进行gzip压缩输出。 那么,如何开启整站gzip压缩输出,可以通过php.ini配置文件,实现开启或关闭php gzip配置,以实现整站的压缩输出。 自php4.3开始zlib.........

[1]php中gzip对文件或字符串解压缩的例子
    来源: 互联网  发布时间: 2013-12-24

本以为,对于使用gzip压缩后传输的网页,本来应该只要发送一个http头 Accept-Encoding: identity或干脆不发送这个头等,即可使目标站返回未经gzip压缩的页面。
实际情况却是:目标站无视客户端的请求,仍然返回gzip数据,造成乱码。

因此,就需要考虑对gzip后的php文件进行解压了,用内置的gzdecode函数即可。

配置了半天也无法支持gzdecode函数,只好用如下的变通方式,实现了想要的功能:
 

代码示例:
<?php
/**
* php自定义gzdecode解压缩gzip文件
* edit www.
*/
if (!function_exists('gzdecode')) {
function gzdecode ($data) {
$flags = ord(substr($data, 3, 1));
$headerlen = 10;
$extralen = 0;
$filenamelen = 0;
if ($flags & 4) {
$extralen = unpack('v' ,substr($data, 10, 2));
$extralen = $extralen[1];
$headerlen += 2 + $extralen;
}
if ($flags & 8) // Filename
$headerlen = strpos($data, chr(0), $headerlen) + 1;
if ($flags & 16) // Comment
$headerlen = strpos($data, chr(0), $headerlen) + 1;
if ($flags & 2) // CRC at end of file
$headerlen += 2;
$unpacked = @gzinflate(substr($data, $headerlen));
if ($unpacked === FALSE)
$unpacked = $data;
return $unpacked;
}
}
?>

调用:
 

代码示例:
<?php
$f=@file_get_contents(http://www.);
echo gzdecode($f);
?>

    
[2]php中开启 Zlib (GZIP) 压缩优化的方法
    来源: 互联网  发布时间: 2013-12-24

在服务器中实现gzip压缩的方法有多种:
1,Nginx 的 GZIP 配置
2,Apache 的 mod_deflate.so  模块
3,各种 PHP 程序中通过 PHP自身 实现压缩。

不过,php本身就有2种实现方法,一种是开启zlib.output_compression,一种是 ob_gzhandler编码。

在默认情况下,zlib.output_compression是关闭的,如需开启需编辑php.ini文件,找到以下选项并开启:
 

代码示例:
zlib.output_compression = On
zlib.output_compression_level = 6

完成后可以通过phpinfo()函数检测结果,当zlib.output_compression的Local Value和MasterValue的值同为On时,表示已经生效,这时候访问的PHP页面(包括伪静态页面)已经GZIP压缩了,通过Firebug或在线网页GZIP压缩检测工具检测到压缩的效果。

若需要使用ob_gzhandler(默认),则需关闭zlib.output_compression,把php.ini文件内容更改为:
 

代码示例:
zlib.output_compression = Off
zlib.output_compression_level = -1

说明:ob_gzhandler是多数程序(discuz,phpwind等)推荐的用法,建议大家采用哦。


    
[3]整站开启php zlib(gzip)压缩输出功能的方法
    来源: 互联网  发布时间: 2013-12-24

我们知道,php主要通过ob_gzhandler内置函数进行gzip压缩输出。
那么,如何开启整站gzip压缩输出,可以通过php.ini配置文件,实现开启或关闭php gzip配置,以实现整站的压缩输出。

自php4.3开始zlib压缩,已内置在php中了,无需单独安装zlib。

如果只通过php.ini配置文件开启gzip配置实现php gzip压缩输出是不行的,还需要apache对其进行支持,所以建议使用apache服务器。

配置gzip步骤:

一、打开php.ini配置文件,找到zlib.output_compression = Off,将
zlib.output_compression = Off
;zlib.output_compression_level = -1

修改为:
zlib.output_compression = On
zlib.output_compression_level = 6

php gzip配置知识点:

1、默认php是不开启zlib整站压缩输出的,而是通过对需要压缩输出的页面使用ob_gzhandler函数实现,两者只能二选一,否则会报错。
2、zlib.output_compression默认值为Off,你可以将其设置为On.
3、zlib.output_compression_level代表压缩比,默认推荐设置压缩比值为6,可选范围为1-9,-1代表关闭php zlib(gzip)压缩

二、保存php.ini配置文件。

三、打开apache 配置文件httpd.conf,配置装载deflate_module
必须让apache装载deflate_module:
找到deflate_module
#LoadModule deflate_module modules/mod_deflate.so
去除开头的#号,并重启apache即可。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3