web-dev-qa-db-ja.com

PHPからC ++に変数を渡す

PHP=からプログラムを呼び出して、いくつかの変数やキーと値のペアのセットをプログラムに渡す必要があります。これらの変数を、呼び出された関数への引数を通じて渡すにはどうすればよいですか?

exec("/path/to/program flag1 flag2 [key1=A,key2=B]");

またはこれを達成するためのより良い方法はありますか?誰かが私にそれらをtxtファイルに書き込んで、そのパスを引数として渡すように提案しました、

exec("/path/to/program path_to_txt_file);

この方法に興奮するつもりはありません。

4
Alex

思い浮かぶ方法はいくつかあります。プロセス間通信を行う、C++をビルドするPHP extension/dll、または直接CLIを使用します。

あなたが提案しているように、PHPスクリプトがシェルパラメータを取り込むようにすることができます( https://stackoverflow.com/questions/6763997/Shell-run-execute-php-script -with-parameters )これを発展させて、クエリ文字列の形式で単一の引数を渡し、$ argv [0]を取得して、それを$ _GETまたは$ _POST、または任意の値に設定できます。何かのようなもの:

<?php

parse_str($argv[0], $_POST);

最後に、(ソケットベースの通信を使用した)より「正しい」解決策として、 Thrift を確認することをお勧めします。 。 https://stackoverflow.com/questions/1746207/how-to-ipc-between-php-clients-and-a-c-daemon-server を参照してください

1
dukeofgaming

PHPの変数をエコーし​​て、HTTPリクエストから返されたデータを読み取ることができます。リクエストを送信した後、おそらくInternetQueryDataAvailableを使用して戻ってくるバイト数を取得し、データを収容するのに十分な大きさのバッファを割り当て、InternetReadFileを使用してデータを取得できますバッファに。

0
The Dark Knight