Pasando datos de C ++ para PHP
Pregunta
Necesito pasar un valor de PHP a C ++. Creo que puedo hacer con la función passthru()
de PHP.
Entonces quiero C ++ para hacer algo a ese valor y devuelve el resultado a PHP.
Esta es la parte que no puedo trabajar, ¿alguien sabe cómo pasar datos desde C ++ para PHP?
Yo Prefiero no usar un archivo intermedio ya que estoy pensando que esto va a ralentizar las cosas.
Solución
Usted podría tener su aplicación C ++ envía su salida a la salida estándar, entonces llamaremos a partir de PHP con acentos abiertos , por ejemplo
$output=`myapp $myinputparams`;
Otros consejos
wow muchas gracias a Columbo y Paul Dixon.
Ahora puedo correr php para llamar a C ++ penas hay pasar de nuevo valor a php ~ =)
Aquí proporciono un coste por muestra y por ello php:
Un programa simple para la suma de las entradas:
a.cpp (a.exe):
#include<iostream>
#include<cstdlib>
using namespace std;
int main(int argc, char* argv[]) {
int val[2];
for(int i = 1; i < argc; i++) { // retrieve the value from php
val[i-1] = atoi(argv[i]);
}
int total = val[0] + val[1]; // sum up
cout << total; // std::cout will output to php
return 0;
}
sample.php:
<?php
$a = 2;
$b = 3;
$c_output=`a.exe $a $b`; // pass in the two value to the c++ prog
echo "<pre>$c_output</pre>"; //received the sum
echo "Output: " . ($output + 1); //modify the value in php and output
?>
salida:
5
Output: 6
Si necesita comunicarse con un programa en C ++ correr, un conexión de socket sobre el host local puede haber el más simple, más independiente de la plataforma y más ampliamente solución compatible para la comunicación entre los dos procesos. Enchufes estaban construidas tradicionalmente a comunicarse a través de las interfaces de red, pero los he visto utilizado en muchos casos como un método de hacer un tubo. Son bastante ubicua y apoyado en la mayoría de las lenguas modernas.
Aquí hay un href="http://beej.us/guide/bgnet/" rel="nofollow noreferrer"> guía para su programa en C ++.
Este artículo acerca de envolver clases de C ++ en una extensión de PHP puede ayudar.
EDIT: todas las soluciones en otras respuestas son mucho más simples, pero menos flexible. Todo depende de lo que necesita.