복붙노트

PHP 코드를 "컴파일"할 수 있습니까?

PHP

PHP 코드를 "컴파일"할 수 있습니까?

PHP가 서버에서 실행되기 전에 PHP가 바이트 코드로 컴파일되고 전체 스크립트가 모든 웹 액세스와 함께 다시 해석 될 필요가 없도록 바이트 코드를 캐시 할 수 있다는 것을 알고 있습니다.

하지만 PHP를 "컴파일"하고 바이트 코드 인터프리터에 의해 실행되는 바이너리 파일을 업로드 할 수 있습니까?

해결법

  1. ==============================

    1.이 질문이 제기 된 후 Facebook은 HipHop for PHP를 시작했습니다. PHP는 현재까지 세계에서 가장 큰 10 개의 웹 사이트 중 하나 인 PHP 컴파일러입니다. 그러나 페이스 북은 컴파일러가 아닌 가상 머신 인 HHVM을 위해이를 중단했다.

    이 질문이 제기 된 후 Facebook은 HipHop for PHP를 시작했습니다. PHP는 현재까지 세계에서 가장 큰 10 개의 웹 사이트 중 하나 인 PHP 컴파일러입니다. 그러나 페이스 북은 컴파일러가 아닌 가상 머신 인 HHVM을 위해이를 중단했다.

    그 외에도, PHP 컴파일러를 검색하는 것은 여러 가지 타사 솔루션을 제시합니다.

    Phalanger

    PHP

    Roadsend PHP 컴파일러

    비 컴파일러

    Project Zero

    밤발람

    BinaryPHP

  2. ==============================

    2.짧은 대답은 "아니오"입니다.

    짧은 대답은 "아니오"입니다.

    PHP의 현재 구현은 해석 된 언어의 것입니다. 어떤 언어라도 기술적으로 해석하거나 컴파일 할 수 있다는 이론적 측면을 주장 할 수는 있지만, 현재의 구현은 PHP 코드가 인터프리터를 실행해야하며 인터프리터는 실행 환경을 관리해야합니다.

    미리 컴파일 된 PHP 바이트 코드를 업로드하는 것에 대한 여러분의 질문에 답하기 위해 아마 가능할 수도 있지만, PHP 인터프리터가 그러한 파일을 읽고 그것에 대해 작업 할 수있는 방법을 구현해야합니다. 기존의 opcode 캐시가 이미 존재하기 때문에 많은 보상을 얻을 수있는 작업처럼 보이지 않습니다.

  3. ==============================

    3.그 질문이 처음으로 물었 기 때문에 그 대답에 대한 평평한 "아니오"에서 "종류의"

    그 질문이 처음으로 물었 기 때문에 그 대답에 대한 평평한 "아니오"에서 "종류의"

    http://github.com/facebook/hiphop-php/wiki

    Hip Hop for PHP는 PHP 코드를 사용하여 고도로 최적화 된 C ++로 컴파일 된 컴파일러였습니다. 분명히 일부 기능은 지원되지 않습니다 (예 : '폭발').

    나는 HipHop을 구현하는 방법에 대한 더 많은 정보를 찾고있는 동안이 질문을 발견했다.

    2013 년부터 페이스 북은 더 이상 그것을 사용하지 않으며 컴파일러가 아닌 HHVM을 위해 중단되었습니다 : https://en.wikipedia.org/wiki/HipHop_for_PHP

  4. ==============================

    4.도 있습니다

    도 있습니다

    목표

    확장은 PECL에서 가능합니다.

  5. ==============================

    5.phc는 PHP 프로그램을 서버에 업로드 할 수있는 공유 라이브러리로 컴파일 할 수있게합니다. PHP 프로그램은 바이너리로 컴파일됩니다. 이것은 evals, include 및 PHP 전체 표준 라이브러리를 지원하는 방식으로 수행됩니다.

    phc는 PHP 프로그램을 서버에 업로드 할 수있는 공유 라이브러리로 컴파일 할 수있게합니다. PHP 프로그램은 바이너리로 컴파일됩니다. 이것은 evals, include 및 PHP 전체 표준 라이브러리를 지원하는 방식으로 수행됩니다.

  6. ==============================

    6.PHP 스크립트에서 바이너리 실행 파일을 만드는 방법을 찾고 있다면 정확히 필요한 부분을 알고있는 것으로 보이게하므로 매우 정확한 질문을하지 마십시오. 게다가, 대부분의 PHP 개발자는 바이트 코드에 대한 단서를 전혀 가지고 있지 않습니다.

    PHP 스크립트에서 바이너리 실행 파일을 만드는 방법을 찾고 있다면 정확히 필요한 부분을 알고있는 것으로 보이게하므로 매우 정확한 질문을하지 마십시오. 게다가, 대부분의 PHP 개발자는 바이트 코드에 대한 단서를 전혀 가지고 있지 않습니다.

    그 말로 대답은 '예'입니다. 방금 바이너리로 PHP 스크립트를 컴파일 완료했습니다. 그리고 어떤 바이너리도 아닙니다. 필자는 CDE 응용 프로그램 (Wayback Machine에 대한 링크, 원래 링크가 끊어짐)을 사용하여 모든 종속성과 함께 배포 될 수 있고 이슈없이 실행될 수있는 이식 가능한 이진 파일로 만들었습니다 ... 그리고 그것은 아름답게 작동합니다.

    phc를 사용하면됩니다.

  7. ==============================

    7.음, 젠드 가드에 대해 들어 본 사람은 누구든지이 사람이 요구하는 것을 정확하게합니다. 그것은 PHP 코드를 "기계어"로 인코딩 / 난독 화합니다.

    음, 젠드 가드에 대해 들어 본 사람은 누구든지이 사람이 요구하는 것을 정확하게합니다. 그것은 PHP 코드를 "기계어"로 인코딩 / 난독 화합니다.

  8. ==============================

    8.PHP 코드의 여러 "컴파일러"가 있습니다. 이들 대부분은 런타임 중에 해석되어야하기 때문에 모든 PHP 기능을 지원하지는 않습니다.

    PHP 코드의 여러 "컴파일러"가 있습니다. 이들 대부분은 런타임 중에 해석되어야하기 때문에 모든 PHP 기능을 지원하지는 않습니다.

    우리는 Phalanger (http://www.php-compiler.net/)를 사용하고 있습니다. PHP 동적 인 기능을 지원하고 있으며, 여전히 .NET 어셈블리로 컴파일 할 수 있습니다.이 라이브러리는 독립 실행 형 DLL로 배포 할 수 있습니다.

  9. ==============================

    9.통합 된 OPcache 모듈, 공유 메모리의 휘발성, 더 많은 성능 및 php의 역 동성 원리로 5.5.x를 참조하십시오.

    통합 된 OPcache 모듈, 공유 메모리의 휘발성, 더 많은 성능 및 php의 역 동성 원리로 5.5.x를 참조하십시오.

    http://www.php.net/manual/en/opcache.installation.php

  10. ==============================

    10.PHP 7에서는 특정 폴더에 바이트 코드를 저장하는 php ini 옵션 opcache.file_cache가 있습니다. 최적화 된 재사용을 위해 "컴파일 된"특정 폴더에 저장된 php cli 스크립트에서 유용 할 수 있습니다.

    PHP 7에서는 특정 폴더에 바이트 코드를 저장하는 php ini 옵션 opcache.file_cache가 있습니다. 최적화 된 재사용을 위해 "컴파일 된"특정 폴더에 저장된 php cli 스크립트에서 유용 할 수 있습니다.

    Opcache는 컴파일되지 않지만 비슷한 것입니다.

  11. ==============================

    11.PHP는 많은 프로그램들처럼 컴파일되지 않습니다. Zend의 인코더를 사용하여 읽을 수 없도록 만들 수 있습니다.

    PHP는 많은 프로그램들처럼 컴파일되지 않습니다. Zend의 인코더를 사용하여 읽을 수 없도록 만들 수 있습니다.

  12. from https://stackoverflow.com/questions/1408417/can-you-compile-php-code by cc-by-sa and MIT license