>  기사  >  백엔드 개발  >  PHP에서 bz2 압축 확장 도구를 사용하는 방법

PHP에서 bz2 압축 확장 도구를 사용하는 방법

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-06-03 17:36:402652검색

이 글에서는 PHP에서 bz2 압축 확장 도구를 사용하는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

PHP에서 bz2 압축 확장 도구를 사용하는 방법

일상적인 개발 및 컴퓨터 사용에서 우리는 압축 및 압축 해제를 위한 몇 가지 도구를 자주 접하게 되며, PHP도 우리를 위해 많은 관련 작업 확장 패키지를 준비했으며, 압축을 편리하게 사용할 수 있는 직접 사용할 수 있는 기능도 있습니다. 그리고 감압 기능. 오늘은 먼저 더 간단하지만 덜 일반적으로 사용되는 압축 형식인 Bzip2를 배워보겠습니다.

확장 설치

이 확장을 설치하려면 시스템에 bzip2-devel이 필요합니다. 따라서 먼저 시스템에 이 소프트웨어 패키지에 대한 지원을 설치한 다음 이 확장이 PHP 설치 패키지와 함께 릴리스되므로 PHP를 컴파일하고 ./configure에 해당 컴파일 명령을 추가하기만 하면 됩니다.

# yum install bzip2-devel
# ./configure xxxx --with-bz2
# make && make install

기본 작업

Bzip2는 몇 가지 기능을 제공하며 매우 간단합니다. 가장 먼저 살펴보는 것은 문자열을 파일에 저장하는 것입니다.

$bz = bzopen('/tmp/test.bz', 'w');
// -rw-r--r-- 1 root root 14 Jun 28 09:51 test.bz

$text = "This is Bz Compress";
bzwrite($bz, $text);
// -rw-r--r-- 1 root root 59 Jun 28 09:53 test.bz

bzclose($bz);

$bz = bzopen('/tmp/test.bz', 'r');

$v = bzread($bz);
echo $v, PHP_EOL;
// This is Bz Compress

bzclose($bz);

파일 작업 함수와 마찬가지로 먼저 bzopen()을 통해 파일을 열어 핸들을 얻어야 합니다. 그런 다음 bzwrite()를 사용하여 파일에 쓰고 bzread()를 사용하여 파일을 읽습니다. 마지막으로 bzclose()를 사용하여 파일을 닫습니다.

여기서 주목해야 할 점은 파일을 여는 형식인 bzopen()의 두 번째 매개변수는 "w" 또는 "r"로만 쓸 수 있다는 점입니다. 다른 유형이 없으며 동시에 읽고 쓸 수 없습니다. 즉, "wr" 형식으로 쓸 수 없습니다. 따라서 파일 쓰기를 마친 후에는 "r"을 사용하여 파일을 열어서 읽어야 합니다.

읽기 길이 설정

$bz = bzopen('/tmp/test.bz', 'r');

$v = bzread($bz, 10);
echo $v, PHP_EOL;
// This is Bz

$v = bzread($bz);
echo $v, PHP_EOL;
//  Compress

bzclose($bz);

bzread()의 두 번째 매개변수는 선택적 바이트 길이이며 기본값은 1024이며, 한 번에 최대 8192개의 압축되지 않은 바이트를 읽을 수 있습니다.

문자열 인코딩

Bzip2 확장은 문자열을 직접 인코딩하는 기능도 제공합니다. 매번 파일에 저장할 필요는 없습니다. 동일한 문자열이면 문자열 인코딩을 사용하는 함수와 파일에 출력되는 내용은 동일한 왜곡된 바이너리 내용이 됩니다.

$str = "Test compress String";

$bzstr = bzcompress($str, 9);
echo $bzstr, PHP_EOL;
// BZh91AY&SY��J���@
//
// �� 1
// df����2�h>.�p�!��//

$newStr = bzdecompress($bzstr);
echo $newStr, PHP_EOL;

$chineseStr = "测试";
$bzstr = bzcompress($chineseStr, 9);
echo bzdecompress($bzstr), PHP_EOL;

bzcompress()는 문자열을 인코딩하고 압축하는 데 사용됩니다. 두 번째 매개변수는 압축 비율이며 9가 가장 높은 수준입니다. 인코딩된 콘텐츠는 인간이 아닌 바이너리 횡설수설입니다. bzdecompress()는 인코딩된 콘텐츠를 디코딩하는 데 사용됩니다. 나는 이것이 기밀 콘텐츠의 암호화된 전송에 사용될 수 있다는 것을 많은 친구들이 발견했다고 믿습니다. 동시에, 테스트 코드에서는 중국어도 정상적으로 지원하는 것을 확인할 수 있습니다.

오류 메시지

마지막으로 Bzip2의 오류 처리 기능을 살펴보겠습니다.

$bz = bzopen('/tmp/test.bz', 'r');
bzwrite($bz, 'aaa');
print_r(bzerror($bz));
// Array
// (
//     [errno] => -1
//     [errstr] => SEQUENCE_ERROR
// )

echo bzerrno($bz), PHP_EOL; // -1
echo bzerrstr($bz), PHP_EOL; // SEQUENCE_ERROR

bzclose($bz);

먼저 오류 환경을 구축합니다. "r"을 사용하여 파일을 열고 핸들을 얻은 후 파일에 씁니다. bzerror()는 오류 번호와 오류 메시지 내용이 포함된 오류 메시지 배열을 반환합니다. bzerrno() 및 bzerrstr()은 각각 오류 번호와 오류 내용을 반환합니다. 매우 간단하고 이해하기 쉬운 세 가지 기능.

요약

이 확장자는 여전히 매우 간단합니다. 가장 중요한 것은 Bzip2 압축 파일 형식은 일반적으로 사용되는 형식이 아니기 때문에 많은 사람들이 알지 못할 수도 있다는 것입니다. 그러나 우리는 여기서 약간의 놀라움을 발견했습니다. 즉, 이 두 기능은 실제로 특정 시나리오에서 정보 암호화 수단으로 사용될 수 있다는 것입니다.

테스트 코드:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/PHP%E7%9A%84Bzip2%E5%8E%8B%E7%BC%A9%E6%89%A9%E5%B1%95%E5%B7%A5%E5%85%B7.php

추천 학습: php 비디오 튜토리얼

위 내용은 PHP에서 bz2 압축 확장 도구를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제