PHP 5.3 を使用する Windows Server で IIS を実行しています。2 つのスクリプトがあります。これらをinitiator.phpとworker.phpと呼びましょう。ユーザーがinitiator.phpを呼び出すと、このスクリプトで変数が定義されます。$input としましょう。この $input 変数を取り、次のように worker.php に渡したいと思います。
$oShell = new COM('Wscript.Shell');
$oShell->Run("\"C:/Program Files (x86)/PHP/v5.3/php/worker.php -a $input",0,False);
worker.php には、initiator.php から渡された $input 変数を取得するための次のコードがあります。
$aCliOpts = getopt('a:');
$input_from_initiator = $aCliOpts['a'];
これはうまくいきます。initial.php の $input 変数は正常に worker.php に渡され、worker.php はそれを取得し、initiator.php は処理を続けます。ただし、worker.php は独自の $input_from_initiator 変数を取り、独自の簡単なコードを実行して、$output_from_worker という 3 番目の変数を作成します。この変数は、initiator.php がその処理を少し読み取る必要があります。これは私がハングアップしているところです。
最初に渡された変数と同じ方法で、変数を worker.php から initial.php に戻そうとしましたが、これは機能しませんでした。私も使用しようとしました:
header('Location: initiator.php?var=value')
HTTP GET パラメータを使用しますが、役に立ちません。
私の最後の手段は、worker.php がこの変数の値をディスクに書き込み、initiator.php がディスクから読み取られるようにすることです。潜在的なディスク I/O のために、これを行うのは嫌いです。このスクリプトでは速度が非常に重要です。
2 つの PHP プロセスがメモリ内で相互に変数を渡す方法はありますか?