Forum und email

Zlib 압축 함수

소개

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

Note: 버전 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 윈도우 버전에서는 이 확장에 대한 지원이 포함되어 있습니다. 이 함수들을 이용하기 위해서 추가로 확장을 읽어들일 필요가 없습니다.

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

실행시 설정

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

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

Zlib 설정 옵션
이름 기본값 설정권한 변경점
zlib.output_compression "0" PHP_INI_ALL PHP 4.0.5부터 사용할 수 있습니다.
zlib.output_compression_level "-1" PHP_INI_ALL PHP 4.3.0부터 사용할 수 있습니다.
zlib.output_handler "" PHP_INI_ALL PHP 4.3.0부터 사용할 수 있습니다.
PHP_INI_* 상수에 대한 자세한 상세와 정의는 php.ini directives를 참고하십시오.

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

zlib.output_compression boolean/integer

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

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

Note: '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)

예제

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

Example#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($zp3);

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

echo 
"\n";

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

?>

Table of Contents

  • gzclose — 지정된 .gz 파일을 닫는다.
  • gzcompress — .gz로 문자를 압축한다.
  • gzdecode — Decodes a gzip compressed string
  • 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