2011-05-05 18 views
10

Un amigo me dijo recientemente que "para optimizar su sitio es posible que desee compilar sus archivos php" y yo estaba como "¿qué?"¿Por qué compilar un archivo PHP?

Sinceramente, nunca he oído hablar de eso, yo soy un programador "avanzado sin tratamiento previo", eso significa que soy autodidacta, he construido sitios complejos, pero todavía estoy perdiendo algo ...

En pocas palabras:

¿Qué significa compilar php? convertirlos en archivos exe? ¿por qué? ¿es más rápido?

+0

Me gusta el nombre de usuario!Solo quería decir eso: en lo que concierne a su pregunta, los tipos que figuran a continuación prácticamente aclaman el consenso general –

+4

A menos que esté operando en escalas de tipo facebook, no tiene sentido compilar su php. El aumento en el rendimiento será insignificante. –

+0

Pero tengo una pregunta sin embargo. Si compila PHP ¿está descompilable? De lo contrario, vender scripts PHP compilados a las empresas parece una buena oferta, ya que no pueden copiarlo. : D –

Respuesta

10

Mientras que el código PHP debe interpretarse en cada llamada, bytecode es código precompilado que se ejecuta casi al instante. En general, solo lo necesitarás, si tienes un sitio web más grande.

Los siguientes herramientas se pueden utilizar para compilar las secuencias de comandos o ejecutar secuencias de comandos compilados:

5

A menos que estés buscando un rendimiento serio, compilar PHP usando algo como HipHop de Facebook es probablemente un poco excesivo.

Instalar/configurar el caché de PHP alternativo (APC) en su máquina que almacenará en caché el bytecode compilado y le dará un aumento de rendimiento instantáneo.

2

Facebook utiliza tales cosas. Su producto es hiphop, y es gratis.

+2

Facebook también tiene millones de usuarios visitados por día. – James

2

La idea de un compilador es convertir el código humano que se puede leer (C, PHP, Java, etc.) en un código legible por máquina. Cuando ejecuta sus scripts PHP, se interpretan (compilación casi en línea), lo que significa que se leen una línea por línea, y el código se ejecuta en consecuencia.

El código compilado significa que está compilado en origen, por lo tanto ya está en lenguaje de máquina (o código de bytes para lenguajes de VM como Java) y, por lo tanto, el servidor no tiene que interpretar el código cada vez. Esto lo hace más rápido.

Facebook creó un compilador de PHP para acelerar su sitio. La idea del código compilado es que, generalmente, una vez que se escribe, no cambia durante un tiempo, por lo que hay una sobrecarga al tener que interpretarlo en el lenguaje de la máquina cada vez que se ejecuta el código. Es por eso que tu amigo quiere decir optimizar.

Por lo tanto, se convertirá en lenguaje de máquina o bytecode (no exe, pero efectivamente el mismo concepto).

+1

Esto es bastante engañoso: el código PHP es compilado en bytecode y luego ejecutado por el motor Zend. No se ejecuta línea por línea. – Ryan

1

Cuanto mayor sea su aplicación, más sentido tiene. PHP carga todo su programa en la memoria y luego lo compila sobre la marcha: lo que significa que necesita ser utilizado. Entonces, si precompila, debe omitir ese paso. Facebook hace algo como esto. El traducen su php a C++ a través de algo llamado hip hop. No es exactamente lo mismo pero entiendes la idea.

Dudo que esto le muestre mucha diferencia en aplicaciones más pequeñas.

+0

No estoy seguro de que esto sea correcto. PHP crea un intermediario de bytecode cuando el archivo ha cambiado y. El código permanece "Precompilado" y solo se vuelve a compilar si el script php ha cambiado y es la primera vez que se solicita antes de que sea precompilada. Por lo tanto, no compila todo el código a la vez. Eso sería bastante ridículo y una gran pérdida de recursos. –

Cuestiones relacionadas