문제

나는 PHP가 서버에서 실행되기 전에 바이트 코드로 컴파일된 다음 해당 바이트 코드를 캐시할 수 있으므로 웹에 액세스할 때마다 전체 스크립트를 다시 해석할 필요가 없다는 것을 알고 있습니다.

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

도움이 되었습니까?

해결책

이 질문을 받은 후 Facebook이 출시되었습니다. PHP용 힙합 이는 아마도 현재까지 가장 잘 테스트된 PHP 컴파일러일 것입니다(세계 10대 웹사이트 중 하나를 실행한 것으로 볼 때).그러나 페이스북은 컴파일러가 아닌 가상 머신인 HHVM을 선호하여 이를 중단했습니다.

그 외에도 구글링을 해보면 PHP compiler 여러 타사 솔루션이 나타납니다.

팔랑에르

phc

  • 네이티브 바이너리로 컴파일
  • 현재는 별로 활성화되지 않음(2014년 2월) – 2011년 마지막 버전, 2013년 여름 마지막 변경

로드센드 PHP 컴파일러

b컴파일러

  • PHP의 PECL 확장
  • 실험적인
  • PHP 바이트코드로 컴파일되지만 PHP 인터프리터를 로드하는 Windows 바이너리로 래핑할 수 있습니다(참조: bcompiler_write_exe_footer() 수동)
  • 현재 단종된 모습(2014년 2월) – 2011년 마지막 변경

프로젝트 제로

  • 위키피디아, IBM
  • 변화의 인큐베이터 웹스피어 스매시
  • IBM이 지원하는
  • Java 바이트코드로 컴파일
  • 지금은 중단된 것 같습니다(2014년 2월) – 웹사이트가 다운되었으며, 2008년과 2009년에 큰 과대 광고처럼 보입니다.

밤발람

  • 독립형 Windows 바이너리로 컴파일
  • 바이너리에는 바이트코드와 런처가 포함되어 있습니다.
  • 현재 단종된 모습(2014년 2월) – 2006년 마지막 변경

바이너리PHP

  • C++로 컴파일
  • 현재 단종된 모습(2014년 2월) – 2003년 마지막 변경

다른 팁

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

PHP의 현재 구현은 해석 된 언어의 구현입니다. 모든 언어가 기술적으로 해석하거나 편집 될 수 있다는 사실의 이론적 측면을 논쟁 할 수 있지만, 현재 구현은 PHP 코드가 통역사를 실행해야하며 통역사는 실행 환경을 관리하는 것입니다.

사전 컴파일 된 PHP 바이트 코드 업로드에 대한 질문에 답하려면 아마도 가능하지만 PHP 통역사가 그러한 파일을 읽고 작업 할 수있는 방법을 구현해야합니다. 기존의 Opcode 캐시가 이미 있으면 많은 보상을 얻는 작업처럼 보이지 않습니다.

질문이 처음으로 물었을 때, 그 대답은 "아니오"에서 "종류의 종류"로 변경되었습니다.

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

PHP의 힙합은 PHP 코드를 가져 와서 최적화 된 C ++로 전환 한 컴파일러로, 일부 기능은 지원되지 않습니다 (예 : '폭발').

나는 Hiphop을 구현하는 방법에 대한 자세한 정보를 찾는 동안이 질문을 찾았고 내가 말할 것이라고 생각했다 :)

그러나 2013 년 이래 Facebook은 더 이상 사용하지 않으며 컴파일러가 아닌 HHVM에 유리하게 중단되었습니다. https://en.wikipedia.org/wiki/hiphop_for_php

도 있습니다

어느 것을 목표로합니다

  • 독점적 인 PHP 응용 프로그램에서 전체 스크립트를 인코딩합니다
  • 독점 PHP 응용 프로그램에서 일부 클래스 및/또는 기능을 인코딩하려면
  • php.exe없이 클라이언트 데스크탑에서 사용할 수있는 PHP-GTK 애플리케이션을 생산할 수 있습니다.
  • PHP To C Converter에 대한 타당성 조사를 수행하려면

확장은 PECL에서 사용할 수 있습니다.

박사 학위 PHP 프로그램을 공유 라이브러리로 컴파일 할 수 있으며 서버에 업로드 할 수 있습니다. PHP 프로그램은 바이너리로 편집되었습니다. 지원하는 방식으로 완료되었습니다. eval에스, includeS 및 전체 PHP 표준 라이브러리.

PHP 스크립트에서 바이너리 실행 파일을 생성하려는 경우 질문을 정확하게 알 수 있도록 질문을 매우 정확하게 만들지 마십시오. 게다가, 대부분의 PHP 개발자는 바이트 코드가 무엇인지에 대한 단서가 전혀 없습니다.

그 말로, 대답은입니다 . 방금 PHP 스크립트를 바이너리로 컴파일하는 것을 마쳤습니다. 그리고 이진만이 아닙니다. 나는 그것을 사용했다 CDE 응용 프로그램 (Wayback Machine에 링크 원본 링크 이제 모든 종속성으로 배포 할 수 있고 어떤 문제없이 실행될 수있는 휴대용 바이너리로 바꾸려면 지금은 깨졌습니다.

당신이 필요한 것은 사용하기 만하면됩니다 박사 학위.

음, 누구든지 들었습니다 젠드 가드, 이 사람이 요구하는 일을 정확하게 수행합니다. PHP 코드를 "기계 코드"로 인코딩/난독 화합니다.

PHP 코드에는 몇 가지 "컴파일러"가 있습니다. 대부분의 PHP 기능을 지원하지는 않습니다.이 기능은 단순히 실행 시간 동안 해석되어야하기 때문입니다.

우리는 Phalanger를 사용하고 있습니다 - http://www.php-compiler.net/ - 더러운 PHP 동적 기능조차 지원하고 있으며 여전히 .NET 어셈블리로 컴파일 할 수 있으며 독립형 DLL로 배포 할 수 있습니다.

통합 OPCACHE 모듈이있는 5.5.x, 공유 메모리의 휘발성, 훨씬 더 많은 성능 및 PHP의 동적 원리는 손대지 않은 상태로 유지됩니다.

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

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

OpCache는 컴파일하지 않지만 비슷한 것입니다.

PHP는 많은 프로그램과 마찬가지로 실제로 컴파일되지 않습니다. Zend의 인코더를 사용하여 읽을 수 없도록 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top