Faire passer des données à partir de C ++ pour PHP
Question
Je dois passer une valeur de PHP en C ++. Je pense que je peux faire avec la fonction de passthru()
de PHP.
Ensuite, je veux C ++ pour faire quelque chose à cette valeur et retourner le résultat à PHP.
Ceci est le bit que je ne peux pas travailler, personne ne sait comment transmettre les données de C ++ pour PHP?
Je préfère ne pas utiliser un fichier intermédiaire que je pense cela va ralentir les choses.
Autres conseils
wow merci beaucoup à Columbo et Paul Dixon.
Maintenant, je peux courir php appeler c ++ THN pass back valeur php ~ =)
Ici, je fournir un échantillon cpp & php pour cela:
Un programme simple pour ajouter des entrées:
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
?>
Sortie:
5
Output: 6
Si vous avez besoin de communiquer à un programme C ++ en cours d'exécution, une connexion socket sur l'hôte local peut être la plus simple, la plus plate-forme indépendante et solution la plus largement pris en charge pour la communication entre les deux processus. Prises étaient traditionnellement construits pour communiquer sur les interfaces réseau, mais je les ai vu utilisé dans de nombreux cas comme méthode de faire une pipe. Ils sont assez omniprésents et soutenus dans la plupart des langues modernes.
Voici un guide C pour la programmation socket. pour votre programme C ++.
Cet article d'emballage classes C ++ dans une extension de PHP peut aider.
EDIT: toutes les solutions dans d'autres réponses sont beaucoup plus simples, mais moins souple. Tout dépend de ce que vous avez besoin.