Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP Phar 컨텍스트 옵션 완벽 가이드

Phar란 무엇인가?

PharPHP Archive의 약자로, PHP 애플리케이션이나 라이브러리에 필요한 모든 리소스를 하나의 .phar 파일로 패키징하여 손쉽게 배포할 수 있도록 해주는 기술입니다. 생성된 phar 파일은 phar:// 스트림 래퍼(wrapper)를 통해 입출력(IO) 스트림으로 활용할 수 있습니다.

phar:// 래퍼에서 사용할 수 있는 컨텍스트 옵션은 크게 compressmetadata 두 가지가 있으며, 각각의 특징을 자세히 살펴보겠습니다.

1. compress 옵션

PHP에서는 압축 형식을 지정하기 위해 다음과 같은 사전 정의 상수(predefined constants)를 제공합니다.

상수설명
Phar::NONE0x00000000압축하지 않음
Phar::COMPRESSED0x0000F000파일 플래그 비트마스크(bitmask)로, 어떤 형태의 압축이라도 적용되어 있는지 확인할 때 사용
Phar::GZ0x00001000zlib(gzip) 방식의 압축 적용
Phar::BZ20x00002000bzip2 방식의 압축 적용

2. metadata 옵션

metadata 옵션은 phar 아카이브에 대한 설명 정보를 저장하는 데 사용됩니다. 해당 정보를 담고 있는 임의의 PHP 변수를 Phar::setMetadata() 메서드의 인수로 전달하면 됩니다. 이렇게 저장된 메타데이터는 나중에 아카이브의 성격이나 출처 등을 파악하는 데 유용하게 활용됩니다.

실전 예제

다음 예제는 Phar 파일을 생성할 때 컨텍스트 옵션을 설정하는 방법을 보여줍니다. gzip 압축을 적용하고, 사용자 정보를 메타데이터로 함께 저장하고 있습니다.

<?php
$context = stream_context_create(array('phar' =>
array('compress' => Phar::GZ)),
array('metadata' => array('user' => 'cellog')));
file_put_contents('phar://my.phar/somefile.php', 0, $context);
?>

위 코드에서는 먼저 stream_context_create() 함수를 사용해 phar 컨텍스트를 생성합니다. compress 옵션에 Phar::GZ 상수를 지정하여 gzip 압축을 적용했으며, metadata 옵션에는 'user' 키를 가진 배열을 전달했습니다. 이후 file_put_contents() 함수를 통해 my.phar 아카이브 내부에 somefile.php 파일을 생성하면서 해당 컨텍스트를 적용합니다.

이처럼 Phar 컨텍스트 옵션을 활용하면 압축 설정과 메타데이터 관리를 유연하게 처리할 수 있어, PHP 애플리케이션의 배포 및 관리 작업을 더욱 효율적으로 수행할 수 있습니다.