外部 API を使用して、オブジェクトのデータを収集します。外部 API の構造上、必要なすべてのデータを取得するために、API のさまざまな部分に対して 5 つの個別の呼び出しを行う必要があります。
今まで順番にやっていたのですが、1 回の繰り返しで 5 秒ほどかかってしまい、複数のオブジェクトを扱うと待ち時間が長くなってしまいます。
私がやりたいのは、5 つのタスクを別々のプロセスにフォークし、それぞれが API に接続できるようにしてから、データセットのそれぞれの部分で配列を更新することです。
これを行うために pcntl_* 関数を見ていますが、効率的に行うためのベストプラクティスが何であるかはわかりません。
基本的に、オブジェクト データがリモート システムに存在することを確認して、5 つの関数を並列に呼び出したいと考えています。Func1 - func5、それぞれにオブジェクトの ID が渡され、プロセスが実行する必要がある 5 つの操作を示す何らかの方法があると思います。
proc がディスパッチされ、親は 5 つすべてが返されるまで待機し、それらの結果をグローバル配列に追加します。
その時点で、親は配列をリクエスタに送り返し、終了します。疑似コードでは、フォークを処理する関数は次のように機能すると考えています。
function LoadObjectData( $oid ) {
$data = array();
// fork our individual operations on the object
forkit( $oid, FUNC_ONE, &$data );
forkit( $oid, FUNC_TWP, &$data );
forkit( $oid, FUNC_THREE, &$data );
forkit( $oid, FUNC_FOUR, &$data );
waitForForksToFinish();
return $data;
}
2 番目の引数は、子が実行する必要がある関数のある種の指標になります。これは、ファイル内の他の 4 つの関数であると考えています。
pcntl_* はこれに最適な方法ですか? これはコードにとって最適な構造でしょうか? どの実際の pcntl_* 呼び出しが必要ですか?
ありがとう。