>백엔드 개발 >PHP 튜토리얼 >PHP 개발을 위해 아카이브 형식 phar를 사용하는 방법

PHP 개발을 위해 아카이브 형식 phar를 사용하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2017-12-20 18:01:521892검색

PHP로 개발된 phar 파일의 개념과 사용법을 소개하겠습니다. PHP 애플리케이션은 여러 파일로 구성되는 경우가 많기 때문에 배포 및 운영을 위해 하나의 파일에 집중할 수 있으면 매우 편리합니다. 그러나 주로 PHP의 웹 환경을 위해 설계되었습니다. JAR 아카이브와 달리 Phar 아카이브는 PHP 자체에서 처리할 수 있으므로 이를 생성하거나 사용하기 위해 추가 도구를 사용할 필요가 없습니다. PHP 스크립트. phar는 PHP와 Archive의 합성어로 PHP 아카이브 파일을 뜻한다고 볼 수 있습니다.

Phar 아카이브 파일은 tar 아카이브, zip 아카이브, phar 아카이브의 세 가지 형식으로 제공됩니다. 처음 두 가지 유형의 실행을 위해서는 Phar 확장 지원을 설치해야 하며 여기서는 주로 phar 아카이브 형식에 대해 설명합니다.

phar 형식 아카이브 파일은 직접 실행할 수 있습니다. 생성은 Phar 확장에 의존하며 직접 작성한 PHP 스크립트로 생성됩니다.

Phar 확장은 PHP의 새로운 개념이 아니며 php5.3에서 PHP에 내장되었으며 원래 PHP로 작성되어 PHP_Archive라는 이름으로 명명된 후 2005년에 PEAR 라이브러리에 추가되었습니다. 이 문제에 대한 순수 PHP 솔루션은 실제로 매우 느리기 때문에 2007년에 순수 C 언어 확장으로 다시 작성되었으며 동시에 SPL 개체 탐색 Phar 아카이브를 사용하여 ArrayAccess에 대한 지원을 추가했습니다. 그 이후로 Phar 아카이브의 성능을 개선하기 위한 많은 작업이 이루어졌습니다.

Phar 확장은 PHP 스트림 래퍼에 따라 달라집니다. 이에 대해서는 이전 기사 PHP 스트림, 래퍼 래퍼 개념 및 사용 예를 참조하세요.

많은 PHP 애플리케이션이 phar 형식으로 배포되고 실행됩니다. 작곡가, 단위 테스트: phpunit, 생성, 실행, 추출 및 복원 방법을 살펴보겠습니다.

phar 파일 생성:

먼저 php.ini에서 phar.readonly 옵션을 수정하고, 앞의 세미콜론을 제거한 다음 보안상의 이유로 이 옵션이 기본적으로 켜져 있습니다. .ini 비활성화된 경우(값이 0 또는 꺼짐) 사용자 스크립트에서 활성화하거나 비활성화할 수 있습니다. php.ini에서 활성화하면 사용자 스크립트를 비활성화할 수 없으므로 으로 설정됩니다. 예를 보여드리려고 여기로 가세요.

프로젝트를 서버 루트 디렉터리에 프로젝트로 생성해 보겠습니다. 디렉터리의 구조는 다음과 같습니다.

file
  -yunek.js
  -yunke.css
lib
  -lib_a.php
template
  -msg.html
index.php
Lib.php


파일 폴더에는 데모용으로 두 개의 빈 js 및 css 파일이 있습니다. 다양한 파일 형식을 포함할 수 있습니다.

lib_a.php 내용은 다음과 같습니다.

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/10
 * Time: 9:23
 */
function show(){
  echo "l am show()";
}


msg.html 내용은 다음과 같습니다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>phar</title>
</head>
<body>
<?=$str; ?>
</body>
</html>


index.php 내용은 다음과 같습니다.

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/10
 * Time: 9:17
 */
require "lib/lib_a.php";
show();
$str = isset($_GET["str"]) ? $_GET["str"] : "hello world";
include "template/msg.html";


Lib.php 내용은 다음과 같습니다.

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/10
 * Time: 9:20
 */
function yunke()
{
  echo "l am yunke()";
}


프로젝트 파일이 준비되었습니다. 이제 프로젝트 폴더와 동일한 디렉터리에 yunkeBuild.php를 생성하여 phar 형식 파일을 생성합니다.

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/10
 * Time: 9:36
 */
//产生一个yunke.phar文件
$phar = new Phar(&#39;yunke.phar&#39;, 0, &#39;yunke.phar&#39;);
// 添加project里面的所有文件到yunke.phar归档文件
$phar->buildFromDirectory(dirname(FILE) . &#39;/project&#39;);
//设置执行时的入口文件,第一个用于命令行,第二个用于浏览器访问,这里都设置为index.php
$phar->setDefaultStub(&#39;index.php&#39;, &#39;index.php&#39;);


그런 다음 브라우저에서 엽니다. 이 yunkeBuild.php 파일에 액세스하면 yunke.phar 파일이 생성됩니다. 이때 서버 루트 디렉터리 구조는 다음과 같습니다.

project
yunkeBuild.php
yunke.phar


이것은 가장 간단한 프로세스입니다. 자세한 내용은 공식 홈페이지를 참조하세요. 여기서 주의할 점은 프로젝트에 단일 실행 항목이 없으면 phar 아카이브 파일을 사용하는 것이 적절하지 않다는 것입니다. phar 아카이브 파일:

위에서 생성한 phar 파일을 사용하는 방법을 보여주기 위해 서버 루트 디렉터리에 index.php 파일을 생성합니다. 내용은 다음과 같습니다.

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/8
 * Time: 9:33
 */
require "yunke.phar";
require "phar://yunke.phar/Lib.php";
yunke();


인덱스에 첫 번째 줄만 있는 경우 .php 파일을 저장한 후 아카이브 파일을 사용하지 않을 때와 정확히 동일하게 다음 코드를 추가합니다:

require "project/index.php";


두 번째 줄이 없으면 세 번째 줄 yunke()는 정의되지 않았음을 알리는 메시지를 표시합니다. phar 파일을 요구할 때 그 안에 있는 모든 파일을 가져오는 것이 아니라, 항목 실행 파일만 가져오는 것을 볼 수 있습니다. 그러나 실제 프로젝트에서는 사용해야 하는 다른 파일을 이 항목 파일로 가져오는 경우가 많습니다. 이 경우 항목 실행 파일은 project/index.php

phar 파일 추출 및 복원:

phar에 포함된 파일의 소스 코드가 궁금할 때가 있습니다. 이때 phar 파일을 복원해야 합니다. 만약 그렇다면 phpstorm 10과 같은 일부 IDE 도구를 사용하여 직접 열 수 있습니다. 수정이 필요한 경우 데모를 위해 Composer.phar을 다운로드하여 넣어야 합니다. server 디렉토리에, 루트 디렉토리에 get.php 파일을 생성합니다. 내용은 다음과 같습니다.

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/9
 * Time: 19:02
 */
$phar = new Phar(&#39;composer.phar&#39;);
$phar->extractTo(&#39;composer&#39;); //提取一份原项目文件
$phar->convertToData(Phar::ZIP); //另外再提取一份,和上行二选一即可


이 파일을 브라우저로 액세스하면 추출할 수 있습니다. 두 번째 줄은 작곡가 디렉토리를 생성하고 추출된 콘텐츠를 여기에 넣습니다. 세 번째 줄은 작곡가.zip 파일을 생성하고 압축을 풀어 추출 및 복원된 프로젝트 파일을 가져옵니다.

추가됨:

1. phar 파일을 프로덕션 서버에 배포할 때 브라우저가 액세스할 때 phar 파일을 직접 다운로드하지 않도록 서버 구성을 조정해야 합니다.

2. 별칭은 아카이브 파일에 영구적으로 저장됩니다. 이는 파일 시스템에서 아카이브가 저장된 위치에 관계없이 짧은 이름으로 아카이브를 참조할 수 있습니다. 별칭을 설정한 후

$phar = new Phar(&#39;lib/yunke.phar&#39;, 0);
$phar->setAlias ( "yun.phar");


다음과 같이 사용됩니다:

<?php
require "lib/yunke.phar";
require "phar://yun.phar/Lib.php"; //使用别名访问归档文件
require "phar://lib/yunke.phar/Lib.php"; //当然仍然可以使用这样的方式去引用

phar 파일을 만들 때 별칭을 지정하지 않으면 Phar::mapPhar('yunke.phar');를 사용하여 스텁 파일에 지정할 수도 있습니다

3. , 실제로는 PHP 실행 코드의 일부로서 아카이브를 만들 때 설정할 수 있으며, 아카이브 파일을 직접 실행하면 실제로 실행되므로 스크립트에 아카이브 파일을 포함시키면 시작 파일이 됩니다. 이를 포함하고 일반 PHP 파일처럼 실행하되 phar://를 직접 사용하십시오. 스텁 파일은 아카이브의 파일이 포함되어 있으면 실행되지 않는 경우가 많습니다. stub 파일은 HALT_COMPILER();로만 끝나며, 없는 경우 기본 stub 디자인을 사용합니다. phar 확장자를 사용할 경우 phar 파일의 내용을 임시 디렉터리에 추출한 후 실행할 수 있습니다. 하지만 php5.3부터는 확장 기능이 기본적으로 내장되어 활성화되어 있습니다

4. 생성된 phar 파일은 수정할 수 없으므로 구성 파일 등의 파일은 아카이브 파일 외부에 배치됩니다

5. mapPhar 함수: 이 함수는 스텁 코드에서만 호출되어야 합니다. 아카이브 별칭이 설정되지 않은 경우 별칭을 설정하고 phar 스트림에 매핑된 참조를 여는 데 사용할 수 있습니다. 이 사례를 읽고 나면 방법을 마스터하신 것입니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목해 보세요!

관련 자료:

PHP가 대규모 웹 사이트 트래픽 및 높은 동시성 문제를 해결하는 방법

AJAX 원칙 및 CORS 도메인 간 방법

Javascript 데이터 유형 및 git 사용 코드에 대한 자세한 설명

위 내용은 PHP 개발을 위해 아카이브 형식 phar를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.