私はHTTPリクエストに対してそのリストを実行しているアプリケーションを持っています。各リクエストはフレームワークオブジェクト$app
がインスタンス化され、ルーティング/コントローラ/モデルなどを処理する単一ページに渡されます。HTTPリクエストとcliクラスオブジェクトとのやりとり方法
これで、オブジェクトがインスタンス化される別のクラスがあります。 CLIスクリプトはそれを$cliApp
と呼ぶことができるようになりました。どのように私はお互いにオブジェクトの両方の話をするのですか? $app
は、新しい要求があるたびにインスタンス化します。
$cliApp
は、スクリプト実行時に一度だけインスタンス化されます。このスクリプトは$loop
オブジェクトを介してループ内でPHP React Event loopによって実行されます。
Cli AppはWebSocketを実行しています。だから基本的に私はHTTP &ソケットを介して通信する必要があります。 http api。
P.S. :
今、私はメッセージキューイングを使用する1つのソリューションを持っています。 0mqなどですが、それは私がスケーリングして単純なままにしているわけではないので、残念です。
私が現在試みているもう一つの解決策は、$http
要求とスレッドによって作成されたスレッド間でSptStorageObjectを共有することです。これは$cli
要求によって作成されました。多分これは依存性注入の問題です。私はこの$store
オブジェクトを共有するのに苦労しています。
あなたのアプリへのすべての要求は、サーバー上に新しいスレッドを開始します。 CLIも同様です。 PHPのスレッドは何も共有しません。コミュニケーションを実現するには、メッセージングシステムが必要です。あなたは正しい軌道に乗っています。 – colburton
ここでいくつのプロセスが実行されているのか分かりません。基本的には、PHPプロセスの1つのインスタンスを起動します(反応HTTPサーバー)、$ cliAppはこの内部にありますか?またはここに複数のPHPインスタンスが生成されていますか? – Method
@メソッドReact Event Loop&Ratchet Websocketsを使用しています。 HTTPリクエストは別のフレームワーク、すなわちsymfony/silexコンポーネントを使用しています。 – kishanio