Передача данных с C++ на PHP
Мне нужно передать значение из PHP в C++. Я думаю, что смогу справиться с функцией PHP passthru()
.
Затем я хочу, чтобы C++ что-то сделал с этим значением и вернул результат в PHP.
Это то, что я не могу понять, кто-нибудь знает, как передавать данные с C++ на PHP?
Я бы предпочел не использовать промежуточный файл, так как думаю, что это замедлит процесс.
4 answers
Вы могли бы сделать так, чтобы ваше приложение на c++ отправляло свои выходные данные в стандартный вывод, а затем вызывало его из PHP с помощью обратных ссылок, например
$output=`myapp $myinputparams`;
Вау, большое спасибо Коломбо и Полу Диксону.
Теперь я могу запустить php для вызова c++, чтобы передать значение обратно в php~=)
Здесь я привожу пример cpp и php для него:
Простая программа для сложения входных данных:
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
?>
Выход:
5
Output: 6
Если вам нужно связаться с запущенной программой на C++, соединение сокета через локальный хост может быть самым простым, наиболее независимым от платформы и наиболее широко поддерживаемым решением для связи между двумя процессами. Сокеты традиционно создавались для связи через сетевые интерфейсы, но я видел, как они использовались во многих случаях как метод создания канала. Они довольно распространены и поддерживаются на большинстве современных языков.
Вот руководство C для сокета программирование. для вашей программы на C++.
Эта статья об обертывании классов C++ в расширение PHP может помочь.
РЕДАКТИРОВАТЬ: все решения в других ответах намного проще, но менее гибкие. Все зависит от того, что вам нужно.