PHPからC++に値を渡す必要があります。私はPHPのpassthru()
の機能でやり遂げることができると思います。 次に、C++がその価値に何かをして結果をPHPに返すようにしたいと思います。 これは私がうまくいかないビットです、誰かがC++からPHPにデータを渡す方法を知っていますか? 私はこれが遅くなると思っているので、中間ファイルを使用したくないです。C++からPHPへデータを渡す
答えて
あなたのC++アプリに出力をstdoutに送信してから、backticksでPHPから呼び出すことができます。あなたが実行しているC++プログラムと通信する必要がある場合
$output=`myapp $myinputparams`;
This article about wrapping C++ classes in a PHP extensionが役に立ちます。
EDIT:他の回答のすべてのソリューションははるかに簡単ですが、柔軟性は低くなります。それはすべてあなたが必要とするものに依存します。
何ソケット接続がより柔軟であれば、私はあなたが何かをするどこでもバイナリデータを送信することができます、と言うでしょう: )あなたのソリューションは、OPが求めているものとそうでないものがあるかもしれないPHPとC++のコードを統合する点で、別の意味では良いかもしれません。 –
一方、送信するデータをシリアル化/デシリアライズする必要がありますが、IMOの柔軟性は低くなります。言語の拡張インタフェースを使用する利点は、言語のデータ構造を直接処理できることです。ソケットの場合は、バイトの文字列を取得するだけです。 –
あなたの意見で最も速くなるこれら3つの方法のうち。私にとっては、backticksメソッドはC++スクリプトを起動して実行する必要がありますが、ソケットと(私が思う)ラッパーメソッドはメモリ常駐のC++プログラムに依存しているため、より速く応答できます。それは合理的か、それとも間違っているのでしょうか? – Columbo
は、localhostを超えるsocket接続は、2つのプロセス間で通信するための最も簡単な、最もプラットフォームに依存しない 、最も広くサポートされている解決策になるかもしれません。ソケットは伝統的にネットワークインターフェースを介して通信するために作られましたが、私は多くの場合それらをパイプの方法として使用していました。彼らはかなり普遍的であり、ほとんどの現代の言語でサポートされています。
ここには、C++プログラム用のC guide for socket programming.があります。
ワオありがとうコロンボに多く&ポールディクソン。
今、私はここで私はそれのためのサンプルCPP & phpの提供C++ THN PHPに値を戻すの〜=)
を呼び出すために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
すべての回答者にありがとう、時間の中でもっと柔軟なソリューションに卒業する必要があると思いますが、今のところこれが成功しています。ありがとう。 – Columbo
もしあなたがそれを助けたら、人に+1を与えるようにしてください:) –