Можно ли “скомпилировать” код PHP и загрузить ли файл двоичного выхода, который будет просто выполнен интерпретатором кода байта?

Я знаю, что PHP компилируется в код байта, прежде чем он будет выполнен на сервере, и затем что код байта может кэшироваться так, чтобы целому сценарию не давали иное толкование с каждым веб-доступом.

Но можно ли "скомпилировать" код PHP и загрузить ли файл двоичного выхода, который будет просто выполнен интерпретатором кода байта?

221
задан Peter Mortensen 14 July 2019 в 17:02
поделиться

4 ответа

После того, как этот вопрос был задан, Facebook запустил HipHop для PHP , который, вероятно, является самым протестированным PHP-компилятором на сегодняшний день (учитывая, что он запускал один из 10 крупнейших веб-сайтов в мире ). Однако Facebook отказался от его поддержки в пользу HHVM, которая представляет собой виртуальную машину, а не компилятор.

Кроме того, поиск в Google PHP-компилятор открывает ряд сторонних решений.

PeachPie

  • ] PeachPie GitHub
  • компилирует PHP в .NET, а .NET Core
  • может быть скомпилирован в автономный двоичный файл
  • работает на Mac, Linux, Windows, Windows Core, ARM, ...

Phalanger

phc

  • компилируется в собственные бинарные файлы
  • сейчас не очень активен (февраль 2014 г.) - последняя версия в 2011, выглядит как большой ажиотаж в 2008 и 2009 годах

Bambalam

  • компилируется в автономные двоичные файлы Windows
  • двоичные файлы содержат байт-код, а программа запуска
  • выглядит прекращенной сейчас (февраль 2014 года) - последнее изменение в 2006 году

BinaryPHP

  • компилируется в C ++
  • сейчас, похоже, прекращено (февраль 2014 г.) - последнее изменение в 2003 г.
231
ответ дан 23 November 2019 в 04:05
поделиться

The short answer is "no".

The current implementation of PHP is that of an interpreted language. You can argue the theoretical aspects of the fact that any language can technically be interpreted or compiled, but as it stands, the current implementations are such that PHP code requires an interpreter to run, and the interpreter manages the executing environment.

To answer your question about uploading pre-compiled PHP bytecode, it's probably possible, but you'd have to implement a way for the PHP interpreter to read in such a file and work with it. With existing opcode caches out there already, it doesn't seem like a task that would reap much reward.

22
ответ дан 23 November 2019 в 04:05
поделиться

PHP doesn't really get compiled as with many programs. You can use Zend's encoder to make it unreadable though.

0
ответ дан 23 November 2019 в 04:05
поделиться

phc позволяет вам компилировать PHP программы в разделяемые библиотеки, который можно загрузить на сервер. Программа PHP скомпилирована в двоичные файлы. Это сделано таким образом, чтобы поддерживать eval s, включать s и всю стандартную библиотеку PHP.

8
ответ дан 23 November 2019 в 04:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: