| Aviso |
Esta extensi贸n es EXPERIMENTAL. Esto significa que el comportamiento de esta extensi贸n, los nombre de sus funciones y en definitiva TODO lo documentado sobre esta extensi贸n, puede cambiar en una futura versi贸n de PHP SIN AVISO. La advertencia queda hecha, y utilizar esta extensi贸n queda bajo su propia responsabilidad. |
Bcompiler fue escrito por varias razones:
| Para codificar un script entero en una aplicaci贸n propietaria escrita en PHP. |
| Para codificar algunas clases y/o funciones en una aplicaci贸n propietaria escrita en PHP. |
| Para permitir la producci贸n de aplicaciones PHP-GTK que puedan ser usadas del lado del cliente, sin necesidad de un php.exe. |
| Para hacer viable el estudio de un convertidor PHP al lenguaje de programaci贸n C. |
La segunda de estas metas se pueden alcanzar usando las funciones bcompiler_write_header(), bcompiler_write_class(), bcompiler_write_footer(), bcompiler_read(), y bcompiler_load(). Los archivos bytecode pueden estar escritos tanto descomprimidos, como en texto plano. La funci贸n bcompiler_load() lee un archivo bytecode comprimido con bzip, el cual suele ser 1/3 del tama帽o original del archivo.
Para crear archivos del tipo exe, bcompiler tiene que ser usado con un archivo sapi modificado o una versi贸n de PHP que haya sido compilada como una librer铆a compartida. En este escenario, bcompiler lee el bytecode comprimido desde el final del archivo exe.
bcompiler puede mejorar su desempe帽o cerca del 30% cuando s贸lo se usa con bytecodes descomprimidos. Pero tenga presente que un bytecode descomprimido puede ser hasta 5 veces m谩s grande que el c贸digo fuente original. Usando la compresi贸n bytecode puede ahorrarle espacio, pero la descompresi贸n requiere mucho m谩s tiempo que analizar un c贸digo. Adem谩s, bcompiler no lleva a cabo alguna optimizaci贸n bytecode; esto pudiera ser agregado en el futuro...
En cuanto a la protecci贸n del c贸digo, es seguro decir que ser铆a imposible recrear el c贸digo fuente exacto desde el cual se construy贸, y sin la compa帽铆a de comentarios en el c贸digo fuente. Efectivamente ser铆a in煤til usar los bytecodes de bcompiler para recrear y modificar una clase. Sin embargo, es posible recuperar informaci贸n desde un archivo bytecode de bcompiler - as铆 que no coloque sus contrase帽as o cualquier otra cosa privada en 茅l.
Nota de instalaci贸n corta:
Necesitar谩 tener al menos PHP 4.3 para que la compresi贸n funcione.
Para instalar en PHP 4.3 o mayor, escriba en el int茅rprete de comandos de UNIX pear install bcompiler.
Para instalar en Windows, hasta que est茅 listo el mecanismo para el paquete de distribuci贸n binario, por favor busque los paquetes pre-construidos en la lista de correo pear-general. (o env铆eles un correo electr贸nico si no pudo hallar una referencia).
Para instalar en versiones anteriores, necesita hacer algunos cambios ligeros al paquete.
extraer el archivo bcompiler.tgz en el directorio php4/ext. (Obt茅ngalo directamente desde PECL http://pecl.php.net/get/bcompiler).
Si el nombre del nuevo directorio no es similar a bcompiler-0.x, deber铆a cambiarle el nombre a bcompiler (a menos que s贸lo desee construirlo como un m贸dulo PHP contenido desde de s铆 mismo).
Si est谩 usando versiones anteriores a PHP 4.3, entonces necesitar谩 copiar el archivo Makefile.in.old a Makefile.in, y config.m4.old a config.m4.
ejecute phpize en ext/bcompiler.
ejecute ./buildconf en php4 .
ejecute configure con --enable-bcompiler (y otras opciones que use).
make; make install
eso es todo.
Si tiene comentarios, soluciones a fallos, mejoras o quiere ayudar a desarrollar esta bestia, puede enviarme un correo-e a alan_k@php.net. Cualquier ayuda es bienvenida.