본문
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 |
위 설정 지시어에 대한 간단한 설명입니다.
- 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와 동일한 다른 명령입니다.
예제
이 예제는 임시 파일을 열어서 테스트 문자열을 쓰고, 이 파일의 내용을 두번 출력합니다.
- 차례
- 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
'IT > PHP' 카테고리의 다른 글
[PHP] Zlib 압축 함수 (0) | 2009/09/23 |
---|---|
[PHP] fsockopen 을 이용한 통신 (0) | 2009/09/23 |
[PHP] php 개발자라면 누구나 아는 사이트... (0) | 2009/04/02 |
[PHP] 자바스크립트에서 escape 값을 unescape 하기 (php에서) (0) | 2009/04/02 |
[PHP] 로딩 속도 개선 (최적화?) (0) | 2009/04/02 |
관련링크
- http://dokeby.tistory.com/107 1024회 연결
댓글목록
등록된 댓글이 없습니다.