Модуль PHP bcompiler

Bcompiler был создан по следующим причинам:

  • для создания приложений php-gtk, которые могут быть использованы непосредственно на клиентском рабочем месте, без необходимости установки на нем PHP;
  • для кодирования части кода PHP (некоторых функций/классов) для проприетарных приложений;
  • для кодирования всего скрипта PHP в проприетарное приложение;
  • для изучения возможности создания конвертера из PHP в C.

Вторая задача достигается использованием функций bcompiler_write_header(), bcompiler_write_class(), bcompiler_write_footer(), bcompiler_read() и bcompiler_load(). Файлы с байткодом могут быть как обычными, так и сжатыми. bcompiler_load() читает сжатый алгоритмом bzip файл, который может ужиматься до 1/3 от оригинального размера.

Третья из этих задач достигается с помощью функций bcompiler_write_header(), bcompiler_write_file() и bcompiler_write_footer(). Файлы с байткодом могут быть как обычными, так и сжатыми. Для использования сгенерированного байткода его достаточно подключить с помощью инструкций include и require.

Для создания исполняемых (EXE) файлов, bcompiler должен использоваться с модифицированным файлом sapi, либо с версией PHP, скомпилированным как разделяемая библиотека. В подобном сценарии, bcompiler будет читать байткод из конца исполняемого файла.

bcompiler может повысить производительность до 30% только если используется с несжатым байткодом. Но помните, что несжатый байткод может достигать размера в 5 раз большего, чем оригинальный код. Использование сжатия байткода позволит сэкономить место на диске, но сильно снизит производительность. Также, еbcompiler не производит никакой оптимизации байткода.

Что касается защиты кода, то можно сказать, что восстановить из байткода в точности такой же код на PHP, какой был изначально — невозможно. Также в нем отсутствуют любые комментарии. Совершенно бесполезно использовать байткод для пересоздания и модификации класса.

Модуль bcompiler доступен в PHP: 5.2, 5.3

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, включая имена его функций и любую другую относящуюся к нему документацию, может измениться в последующих версиях PHP без уведомления.
Модуль PHP bcompiler
Была ли эта статья полезна?
нет 0
просмотры: 10