사이트 내 전체검색
[PHP] Zlib 압축 함수 홈페이지 로딩속도 개선 (테스트중)
로빈아빠
https://cmd.kr/server/534 URL이 복사되었습니다.

본문

CXXIV. Zlib 압축 함수

소개

이 모듈은 gzip (.gz) 압축 파일을 읽고 쓸 수 있게 하며, 버전에 따라서는 대부분의 파일시스템 함수에서 gzip-압축 파일 작업을 할 수 있게 합니다. (비압축 파일도 가능하지만, 소켓에는 불가능합니다)

참고: 버전 4.0.4에서 .gz 파일을 위해 'zlib:' URL로 접근하는 fopen-랩퍼가 추가되었습니다. fopen()을 호출할 때 파일 이름이나 경로 앞에 'zlib:'을 덧붙여서 보통의 f*() 파일 접근 함수에서 압축 파일에 자유롭게 접근할 수 있습니다.

버전 4.3.0에서 이 특별한 전치사는 ':'을 포함하는 파일 이름과의 혼동을 막기 위해서 'zlib://'으로 변경되었습니다.

이 기능은 fopencookie() 함수를 제공하는 C 런타임 라이브러리가 필요합니다. 현재 알려진 바로는 GNU libc가 이 기능을 제공하는 유일한 라이브러리입니다.

요구 사항

이 모듈을 Jean-loup Gailly와 Mark Adler가 작성한 zlib의 함수들을 사용합니다. 이 모듈에서는 zlib 버전 >= 1.0.9를 사용해야 합니다.

설치

PHP의 Zlib 지원은 기본값으로 활성화되어 있지 않습니다. PHP를 --with-zlib[=DIR]로 설정해야 합니다.

PHP 윈도우 버전에서는 이 확장 모듈에 대한 지원이 포함되어 있습니다. 이 함수들을 이용하기 위해서 추가로 확장 모듈을 읽어들일 필요가 없습니다.

참고: 윈도우즈에서 zlib 지원 내장은 PHP 4.3.0에서 이루어졌습니다.

런타임 설정

이 함수의 작동은 php.ini 설정에 영향을 받습니다.

zlib 확장은 브라우저가 지원한다면, 페이지를 전송할 때 압축할 수 있는 옵션을 제공합니다. 설정 파일 php.ini에 세가지 옵션이 존재합니다.

표 1. Zlib 설정 옵션

이름 기본값 변경가능성
zlib.output_compression "Off" PHP_INI_ALL
zlib.output_compression_level "-1" PHP_INI_ALL
zlib.output_handler "" PHP_INI_ALL
PHP_INI_* 상수에 대한 자세한 내용 및 정의는 ini_set()을 참고하십시오

위 설정 지시어에 대한 간단한 설명입니다.

zlib.output_compression boolean/integer

페이지 압축의 사용 여부. 이 옵션을 php.ini나 아파치 설정에서 "On"으로 지정하면, 브라우저가 "Accept-Encoding: gzip"이나 "deflate" 헤더를 보냈을때, 페이지를 압축합니다. "Content-Encoding: gzip"(혹은 "deflate")과 "Vary: Accept-Encoding" 헤더을 출력에 추가합니다.

헤더를 전송하기 전에 ini_set()을 사용해서 스크립트 내부에서 무효화할 수 있습니다. "Content-Type: image/" 헤더를 출력해도 압축을 무효화합니다(넷스케이프 버그로 인해). 이미지 content-type 헤더 호출을 추가한 뒤에 "ini_set('zlib.output_compression', 'On')"을 추가하여 다시 활성화 할 수 있습니다.

boolean "On"/"Off" 외에 정수값을 지정하여, 출력 버퍼 크기를 설정할 수 있습니다. (기본값은 4KB) (default is 4KB).

참고: 'On'으로 지정했을 때, output_handler는 zlib.output_handler를 사용하지 말고, 비어있어야 합니다!

zlib.output_compression_level integer

출력 압축에 사용하는 압축 레벨.

zlib.output_handler string

zlib.output_compression을 활성화 했을 때, 추가 출력 핸들러를 지정할 수 없습니다. 이 설정은 output_handler와 동일한 다른 명령입니다.

리소스 종류

이 확장 모듈은 리소스형을 정의하지 않습니다.

상수 정의

이 확장 모듈은 다음의 상수를 정의합니다. 이는 확장 모듈을 PHP에 내장했거나, 실행시에 동적으로 읽어들일 경우에만 사용할 수 있습니다.

FORCE_GZIP (integer)

FORCE_DEFLATE (integer)

예제

이 예제는 임시 파일을 열어서 테스트 문자열을 쓰고, 이 파일의 내용을 두번 출력합니다.

예 1. 작은 Zlib 예제

<?php

$filename
= tempnam('/tmp', 'zlibtest') . '.gz';
echo
"<html>\n<head></head>\n<body>\n<pre>\n";
$s = "Only a test, test, test, test, test, test, test, test!\n";

// 최대 압축으로 쓰기 위한 파일을 엽니다.
$zp = gzopen($filename, "w9");

// 파일에 문자열을 씁니다.
gzwrite($zp, $s);

// 파일을 닫습니다.
gzclose($zp);

// 읽기 위해 파일을 엽니다.
$zp = gzopen($filename, "r");

// 3 문자를 읽습니다.
echo gzread($zp, 3);

// 파일을 끝까지 출력하고 닫습니다.
gzpassthru($zp);
gzclose($zp);

echo
"\n";

// 파일을 읽어서 내용을 출력합니다. (두번째)
if (readgzfile($filename) != strlen($s)) {
        echo
"zlib 함수의 에러!";
}
unlink($filename);
echo
"</pre>\n</body>\n</html>\n";

?>
차례
gzclose -- 지정된 .gz 파일을 닫는다.
gzcompress -- .gz로 문자를 압축한다.
gzdeflate -- Deflate a string
gzencode -- Create a gzip compressed string
gzeof -- 지정된 .gz 파일의 끝을 테스트한다.
gzfile -- gz 파일 내용을 배열로 읽어들인다.
gzgetc -- 지정된 .gz파일로부터 문자를 추출한다.
gzgets -- 지정된 파일로 부터 라인을 읽어 들인다.
gzgetss --  .gz 파일로부터 HTML 태그를 제외하고 한 라인을 읽는다,
gzinflate -- Inflate a deflated string
gzopen -- .gz파일을 연다
gzpassthru --  지정된 파일의 남아있는 모든 데이타를 출력한다.
gzputs -- 지정된 .gz 파일에 기록한다.
gzread -- .gz로부터 바이트값을 읽어들인다
gzrewind -- 지정된 .gz파일을 리와인드한다
gzseek -- 지정된 .gz 파일을 검색한다.
gztell -- 지정된 .gz 파일의 read/write position을 리턴한다
gzuncompress -- gz로 압축된 문자를 압축해제 한다.
gzwrite -- 지정된 string을 .gz파일 스트림에 기록한다.
readgzfile -- .gz파일을 출력한다
zlib_get_coding_type -- Returns the coding type used for output compression
저작자 표시 비영리 변경 금지

댓글목록

등록된 댓글이 없습니다.

1,139 (8/23P)

Search

Copyright © Cmd 명령어 18.191.189.124