0

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 プロセスがメモリ内で相互に変数を渡す方法はありますか?

4

3 に答える 3

0

元の質問とは少し違うことをしてしまいましたが、助けてくれてありがとう。さまざまな cURL リクエストを実行しようとしていました。curl_multi_exec() は私にとってうまくいきました。

于 2013-01-02T22:42:12.837 に答える
0

Have a look at file_get_contents() http://php.net/file_get_contents, which you can pass a URL to. So you could use the Query String like:

 $var = file_get_contents('http://site.tld/worker.php?input='.$input);

And in worker.php, simply echo your result.

于 2012-12-31T02:07:05.463 に答える
0

*nixのsys5 拡張機能は素晴らしいので、Windows で実行しているのは残念です!

通信にはいつでもファイルやデータベースなどを使用できます。

于 2012-12-31T02:08:05.393 に答える