2010-04-10 22 views
11

vi este mensaje el Sitepoint citando una declaración por Rasmus Lerdorf que va (según Sitepoint) de la siguiente manera:Haciendo uso de C++ para acelerar PHP

cómo se puede hacer PHP rápido? Bueno, no se puede "fue su respuesta rápida. PHP simplemente no es lo suficientemente rápido como para escalar a los niveles de Yahoo. PHP nunca fue pensado para ese tipo de tareas." Cualquier lenguaje basado en secuencias de comandos simplemente no es lo suficientemente rápido ". Para obtener la velocidad que es necesario para sistemas web realmente masivas que tienen que utilizar compilado en C++ extensiones para obtener verdadera arquitectura escalable. eso es lo que Yahoo no y también lo hacen muchos otros pesos pesados ​​de PHP.

Intrigado por la declaración (por no mencionar el hecho de que, hasta ahora, todo lo que hacía en PHP fue pequeñas aplicaciones basadas en la base de datos), me preguntaba cómo podía "uso compilado C++ extensiones" con PHP.

alguna idea o recursos?

+0

>> hasta ahora, todo lo que hacía en PHP eran pequeñas aplicaciones basadas en bases de datos << Y para aquellos PHP debería estar bien ;-) – igouy

Respuesta

15

Ni siquiera te molestes. PHP es lento ... Puedes crear una mezcla de C++ y PHP pero necesitarás hacer muchos perfiles para entender qué es lento. Y esto es principalmente ... PHP.

Ver siguiente:

Simplemente escriba en C++ en primer lugar. Es tan simple como escribir en PHP con el moderno framework web C++ y buen conocimiento en C++.

Por dónde empezar:

  • CppCMS - MVC marco escalable orientada para el rendimiento.
  • Wt - marco que imita Qt para web (no estoy seguro de cómo se adapta bien).
+3

He creado un sitio web en C++; fue muy agradable de hacer ya que las herramientas de C++ (IDE, depuradores, perfiladores, Visual Studio, Intellisense, etc.) son mucho mejores que las de PHP. La única molestia fueron los tiempos de compilación. –

+0

+1 pero muchos más más si puede dar más detalles. Suena extremadamente interesante. Sitio web en C++ ... – Mawg

+0

@mawg - solo siga el enlace CppCMS ... hay muchos detalles, fundamentos, etc. – Artyom

2

Hay una introducción para escribir extensiones de php en http://devzone.zend.com/article/1021 (publicado en 2005, podría estar un poco desactualizado).
También puede usar herramientas como swig para compilar envolturas para el código C/C++ existente.

5

Slow es el término subjetivo. Facebook (el sitio más grande en línea) se basa en PHP y nunca los escuché quejarse. Por el contrario, en su búsqueda de la velocidad, el desarrollado y recientemente lanzado HipHop Si va por PHP ultrarrápido, es aquí donde debe enfocarse. C++ para web es poco práctico porque necesita ser compilado y ralentizará el proceso de desarrollo.

Porque: Why are so many web languages interpreted rather than compiled?

http://www.bitsandbuzz.com/article/compiled-web-vs-interpreted-web/

+3

Nota: HipHop solo aumentó el rendimiento en aproximadamente 2 veces porque PHP está tipado dinámicamente en los lenguajes y no tiene una forma natural de compilarse en C++ ... Así que tienen una gran base de código en PHP y se quedan con él ... – Artyom

+5

@Artyom - Realmente odiaría estar "atascado" con una base de código que estaba ganando cientos de millones de dólares. – zombat

+0

Las personas deben entender la diferencia entre la programación para la web y la programación de una computadora en el hogar. La programación de una computadora en casa pone la velocidad primero, por eso se prefieren los lenguajes de bajo nivel fuertemente tipados, como C y C++, porque le brindan el mayor nivel de optimización de velocidad. Mientras que en la programación de la contraparte para la web está más preocupado por hacer que el proceso de programación sea más fácil y más rápido. La verdad es que cuando hablamos de web, es más barato agregar un servidor para acelerar el código incorrecto que contratar a un buen programador para que escriba un código más rápido. –

4

El cuello de botella es por lo general de E/S o la base de datos de consultas en lugar de lo que el lenguaje que está utilizando.

+1

¡Absolutamente! También servidores web mal configurados, sin uso de caché, HTML y JavaScript mal escritos. –

1

Gracias a Artyom para el enlace a este enlace informativo,

http://idleprocess.wordpress.com/2009/11/24/presentation-summary-high-performance-at-massive-scale-lessons-learned-at-facebook/

que dice, entre otras muchas cosas, "C++ Interoperabilidad desafiante".

C++ requiere mucho esfuerzo para escribir un sitio web. ¿Por qué no elegir un idioma entre C++ y PHP, digamos Python, que se ejecuta bytecode JIT, y entiendo que C++ lo amplíe de manera relativamente fácil?

+1

¿Has probado benchmarking IronPython para aplicaciones reales? No es mucho más rápido que Python, pero aún mucho más lento que C++. ¿Por qué? Python lenguaje tipado dinámicamente. La misma razón HipHop solo da ganancia x2 para aplicaciones PHP compiladas en C++. – Artyom

+0

@Artyom: ¿pero es más rápido que PHP? – Potatoswatter

+0

PHP e IronPython/Python tienen un rendimiento similar +/-. – Artyom

3

La primera pregunta que viene a la mente es: ¿se desarrolla para un sitio web que procesa más de un millón de visitas por hora? Porque si no, entonces sus costos son todos en el desarrollo de software, y obtendrá más por su dinero sintonizando su código PHP actual y agregando hardware que migrando incluso parte de la base de código a C o C++.

Consulte también http://shootout.alioth.debian.org/ tenga en cuenta las comparaciones de tamaño de código.

Sí, por encima de este nivel (aproximadamente), entonces los costos de hardware comienzan a aumentar hasta el punto en que vale la pena el esfuerzo extra de desarrollo en un lenguaje compilado.

Lo siguiente a tener en cuenta es que si bien es cierto que un código compilado muy bien escrito siempre superará a un código interpretado similarmente bien escrito, cuando la calidad del código es incluso ligeramente inferior a la perfecta, la diferencia se reduce el efecto variará según el idioma y la capacidad del programador. Actualmente cuido de una aplicación web desarrollada competentemente escrita en Java (que se ejecuta como código nativo) que requiere el doble de recursos de hardware para ejecutarse más lento que un sistema comparable que he manejado, escrito en PHP por programadores con la mejor descripción de que es un amplia gama de niveles de habilidad. Aunque esto contradice directamente lo que la mayoría de los programadores pensarían como sentido común, confío en decir que el argumento interpretado/compilado no es el único. Hay muchos orgranisations/individuos que todavía desarrollan lenguajes interpretados, p. Groovy, Apex.

C.

0

Para grandes cálculo y procesamiento de C++ se puede utilizar con php. Y para un proceso más ligero solo PHP es suficiente.

Al trabajar en el procesamiento de datos o en aplicaciones basadas en cálculos C++ puede ayudar. Por favor, no tienes que usar un truco aquí.

Hay que crear un proceso de servidor (daemon) que mantenga el listerning para la solicitud. Este proceso de daemon ya está compilado y contiene código de procesamiento.

Entonces, cuando hay alguna solicitud para procesar los datos, lo hará mucho más rápido que PHP y responderá con el resultado.

Se puede usar exec o una función similar para ejecutar el ejecutable de daemon.

Cuestiones relacionadas