PHP=からプログラムを呼び出して、いくつかの変数やキーと値のペアのセットをプログラムに渡す必要があります。これらの変数を、呼び出された関数への引数を通じて渡すにはどうすればよいですか?
exec("/path/to/program flag1 flag2 [key1=A,key2=B]");
またはこれを達成するためのより良い方法はありますか?誰かが私にそれらをtxtファイルに書き込んで、そのパスを引数として渡すように提案しました、
exec("/path/to/program path_to_txt_file);
この方法に興奮するつもりはありません。
思い浮かぶ方法はいくつかあります。プロセス間通信を行う、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 を参照してください
PHPの変数をエコーして、HTTPリクエストから返されたデータを読み取ることができます。リクエストを送信した後、おそらくInternetQueryDataAvailableを使用して戻ってくるバイト数を取得し、データを収容するのに十分な大きさのバッファを割り当て、InternetReadFileを使用してデータを取得できますバッファに。