PHP가 서버에서 실행되기 전에 바이트 코드로 컴파일 된 다음 해당 바이트 코드를 캐시 할 수 있으므로 전체 스크립트를 모든 웹 액세스로 다시 해석 할 필요가 없습니다.
그러나 PHP 코드를 “컴파일”하고 바이너리 코드 파일을 업로드 할 수 있습니까?이 코드는 바이트 코드 인터프리터에 의해 실행될 것입니까?
답변
이 질문을받은 후 Facebook은 현재까지 가장 테스트 된 PHP 컴파일러 인 HipHop for PHP 를 출시했습니다 (세계 10 대 웹 사이트 중 하나를 실행 한 것으로 보임). 그러나 페이스 북은 컴파일러가 아닌 가상 머신 인 HHVM을 선호하여 중단했습니다.
그 외에도 인터넷 검색 PHP compiler
은 수많은 타사 솔루션을 제공합니다.
- 피치 피 깃 허브
- PHP를 .NET 및 .NET Core로 컴파일
- 자체 포함 된 이진 파일로 컴파일 가능
- Mac, Linux, Windows, Windows Core, ARM에서 실행됩니다 …
- 네이티브 바이너리로 컴파일
- 현재 활발하지 않음 (2014 년 2 월) – 2011 년 마지막 버전, 2013 년 여름 마지막 변경
- GitHub , 재 작성의 GitHub
- 컴파일러를 이용한 무료 오픈 소스 PHP 구현
- 네이티브 바이너리로 컴파일 (Windows, Linux)
- 기고자가 발견 될 때까지 2010 년 이후 중단 – 웹 사이트 다운, 2012 년 초부터 마지막 변경이 발생한 GitHub에 유지
- PHP의 PECL 확장
- 실험적인
- PHP 바이트 코드로 컴파일하지만 PHP 인터프리터를로드하는 Windows 바이너리로 래핑 할 수 있습니다 (
bcompiler_write_exe_footer()
manual 참조 ) - 단종 된 것으로 보입니다 (2014 년 2 월) – 2011 년 마지막 변경
- 위키 백과 , IBM
- WebSphere sMash의 인큐베이터
- IBM에서 지원
- Java 바이트 코드로 컴파일
- (판매 중단) (2014 년 2 월) – 웹 사이트가 다운되어 2008 년과 2009 년에 과대 광고처럼 보입니다.
- 독립형 Windows 바이너리로 컴파일
- 바이너리는 바이트 코드와 런처를 포함합니다.
- 단종 된 것으로 보입니다 (2014 년 2 월) – 2006 년 마지막 변경
- C ++로 컴파일
- 단종 된 것으로 보입니다 (2014 년 2 월) – 2003 년 마지막 변경
답변
짧은 대답은 “아니오”입니다.
현재 PHP의 구현은 해석 된 언어의 구현입니다. 모든 언어가 기술적으로 해석되거나 컴파일 될 수 있다는 사실의 이론적 인 측면을 논할 수 있지만, 현재 구현은 PHP 코드가 인터프리터를 실행하고 인터프리터가 실행 환경을 관리하는 방식입니다.
사전 컴파일 된 PHP 바이트 코드 업로드에 대한 질문에 대답하려면 가능할 수도 있지만 PHP 인터프리터가 해당 파일을 읽고 작업 할 수있는 방법을 구현해야합니다. 기존 opcode 캐시가 이미 있으면 많은 보상을 얻는 작업처럼 보이지 않습니다.
답변
질문이 처음으로 제기 된 이후로, “아니오”에서 “종류”로 답변이 변경되었습니다.
http://github.com/facebook/hiphop-php/wiki
Hip Hop for PHP는 PHP 코드를 사용하여 최적화 된 C ++로 변환 한 컴파일러였습니다. 분명히 일부 기능은 지원되지 않습니다 (예 : ‘explode’)
HipHop을 구현하는 방법에 대한 자세한 정보를 찾고이 질문을 찾았으며 내가 생각할 것이라고 생각했습니다. 🙂
그러나 2013 년 이후 Facebook에서는 더 이상 사용하지 않으며 컴파일러가 아닌 HHVM을 위해 중단되었습니다 : https://en.wikipedia.org/wiki/HipHop_for_PHP
답변
도 있습니다
어느 목표
- 독점 PHP 응용 프로그램에서 전체 스크립트를 인코딩하려면
- 독점 PHP 응용 프로그램에서 일부 클래스 및 / 또는 함수를 인코딩하려면
- php.exe없이 클라이언트 데스크톱에서 사용할 수있는 php-gtk 응용 프로그램을 제작할 수 있습니다.
- PHP에서 C 로의 변환기에 대한 타당성 조사를 수행하려면
확장은 PECL에서 사용할 수 있습니다.
답변
phc를 사용하면 PHP 프로그램을 공유 라이브러리로 컴파일하여 서버에 업로드 할 수 있습니다. PHP 프로그램은 바이너리로 컴파일됩니다. eval
s 및 include
s 전체 PHP 표준 라이브러리 를 지원하는 방식으로 수행됩니다 .
답변
PHP 스크립트에서 바이너리 실행 파일을 생성하려는 경우 질문을 정확하게 이해하지 마십시오. 필요한 내용을 정확하게 알고있는 것처럼 보이기 때문입니다. 게다가 대부분의 PHP 개발자는 바이트 코드가 무엇인지 전혀 모른다.
그렇게 말하면 대답은 ‘ 예’ 입니다. 방금 PHP 스크립트를 바이너리로 컴파일했습니다. 그리고 이진 만이 아닙니다. CDE 응용 프로그램 을 사용했습니다 ( 원래 링크 인 Wayback Machine 링크). 지금 고장) 모든 종속성을 배포하고 문제없이 실행 할 수있는 휴대용 진로를 설정하는 … 그리고 그것을 아름답게 작동합니다.