2009-06-09 22 views
4

PHPからC++に値を渡す必要があります。私はPHPのpassthru()の機能でやり遂げることができると思います。 次に、C++がその価値に何かをして結果をPHPに返すようにしたいと思います。 これは私がうまくいかないビットです、誰かがC++からPHPにデータを渡す方法を知っていますか? 私はこれが遅くなると思っているので、中間ファイルを使用したくないです。C++からPHPへデータを渡す

答えて

6

あなたのC++アプリに出力をstdoutに送信してから、backticksでPHPから呼び出すことができます。あなたが実行しているC++プログラムと通信する必要がある場合

$output=`myapp $myinputparams`; 
+0

すべての回答者にありがとう、時間の中でもっと柔軟なソリューションに卒業する必要があると思いますが、今のところこれが成功しています。ありがとう。 – Columbo

+0

もしあなたがそれを助けたら、人に+1を与えるようにしてください:) –

0

This article about wrapping C++ classes in a PHP extensionが役に立ちます。

EDIT:他の回答のすべてのソリューションははるかに簡単ですが、柔軟性は低くなります。それはすべてあなたが必要とするものに依存します。

+0

何ソケット接続がより柔軟であれば、私はあなたが何かをするどこでもバイナリデータを送信することができます、と言うでしょう: )あなたのソリューションは、OPが求めているものとそうでないものがあるかもしれないPHPとC++のコードを統合する点で、別の意味では良いかもしれません。 –

+0

一方、送信するデータをシリアル化/デシリアライズする必要がありますが、IMOの柔軟性は低くなります。言語の拡張インタフェースを使用する利点は、言語のデータ構造を直接処理できることです。ソケットの場合は、バイトの文字列を取得するだけです。 –

+0

あなたの意見で最も速くなるこれら3つの方法のうち。私にとっては、backticksメソッドはC++スクリプトを起動して実行する必要がありますが、ソケットと(私が思う)ラッパーメソッドはメモリ常駐のC++プログラムに依存しているため、より速く応答できます。それは合理的か、それとも間違っているのでしょうか? – Columbo

0

は、localhostを超えるsocket接続は、2つのプロセス間で通信するための最も簡単な、最もプラットフォームに依存しない 、最も広くサポートされている解決策になるかもしれません。ソケットは伝統的にネットワークインターフェースを介して通信するために作られましたが、私は多くの場合それらをパイプの方法として使用していました。彼らはかなり普遍的であり、ほとんどの現代の言語でサポートされています。

ここには、C++プログラム用のC guide for socket programming.があります。

2

ワオありがとうコロンボに多く&ポールディクソン。

今、私はここで私はそれのためのサンプル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 
関連する問題