2009-10-01 18 views
17

Estaba leyendo en alguna parte que a veces PHP simplemente no es lo suficientemente rápido y que el código compilado a veces tiene que "hacer el trabajo pesado"¿Cómo puedo usar el código C++ para interactuar con PHP?

¿Qué es la API en C++ para hacer esto?

+2

Antes de buscar en la mezcla de C++ con PHP, diría perfil y asegurarse de encontrar la sección de PHP que es lento, y ver si puedes mejorarlo en PHP primero. La mayoría de las interfaces que le permiten pasar del lenguaje X a C++ se verán raras cuando escriba la extensión en C++. – Calyth

Respuesta

32

Puede agregar funciones/clases a PHP, programadas en C (y puede ajustar una clase C++ desde C, si no recuerdo mal de un artículo que leí hace tiempo)), que podría permitirle hacer algunas cosas más rápido, si está bien programado: no es necesario interpretar el código PHP; solo la ejecución del código de máquina, que generalmente es mucho más rápido.

Para hacer eso, tendrás que desarrollar una extensión PHP .


No hay que muchas Recursos disponibles en Internet acerca de eso, pero éstos, se puede ayudarle a comenzar:

Y, específicamente sobre la parte C++, éste podría ayudar también:


Si usted está realmente interesado por el tema, y ​​dispuesto a gastar algo de dinero en ella, usted podría también compre el libro Extending and Embedding PHP(some pages are available as preview on Google Books también); He visto un par de veces que era el libro a leer cuando interesada en este tema (De hecho, me he comprado hace algún tiempo, y es una lectura interesante)

Por cierto, el autor de ese libro es también el autor de los cuatro primeros artículos que vincula a ;-)


esperanza esta ayuda ...
que se diviertan!

+0

Gracias por esta información, ¡realmente me ha ayudado mucho! – qodeninja

+0

¿Dichas clases de C++ envueltas en una extensión de PHP se ejecutarán más rápido que reescribiéndolas en PHP? ¿Cuál es la ventaja de esto? –

+0

Gracias por el enlace. Bonitos artículos – Confused

9

Puede realidad execute aplicaciones compiladas sin ningún tipo de API:

$output = exec('/path/to/yourapp'); 

Más allá de eso, siempre se puede escribir una extensión de PHP. Hay una buena guía sobre el tema aquí: http://devzone.zend.com/article/1021

+2

+1 para una extensión PHP, pero -1 para exec() – LiraNuna

+2

@Lira: Uh, ¿por qué? – brianreavis

+0

exec() es una gran vulnerabilidad de seguridad si un atacante pasa una línea de comando dañina a la función si no se usa escapeshellarg() o escapeshellcmd(). – mosid

6

swig, the Simplified Wrapper and Interface Generator puede ayudar a envolver (existente) C++ en un módulo php.

SWIG es una herramienta de desarrollo de software que conecta programas escritos en C y C++ con una variedad de lenguajes de programación de alto nivel. SWIG se utiliza con diferentes tipos de idiomas, incluidos lenguajes de scripting comunes como Perl, PHP, Python, Tcl y Ruby.
+0

Acabo de intentar usar SWIG para escribir un envoltorio C PHP muy simple. Funcionó sin problemas muy fácil. –

0

han probado SWIG ?? ¡parece una buena solución para tu problema!

click here para visitar la página web de la SWIG (la documentación podría no ser mucho más agradable sin embargo!)

Cuestiones relacionadas