2

3つの別々のAPI呼び出しを行い、結果を組み合わせて、ユーザーに出力する必要があるPHPスクリプトがあります。

問題は、各API呼び出しの実行に約5秒かかることです。それぞれ5秒で3つのAPI呼び出しがある場合、スクリプトの実行には約15秒かかります。

どういうわけか3つのAPI呼び出しを同時に開始し、最後の呼び出しが終了したら、結果を組み合わせる方法はありますか?それが可能であれば、時間の長さを15秒から5秒に短縮して、ユーザーエクスペリエンスを劇的に向上させることができます。

PHPで非同期関数呼び出しを調べましたが、良い選択肢はあまりないようです。誰かが同じような状況にあり、これを処理するためのエレガントな方法を見つけてくれることを願っています。

4

2 に答える 2

1

PHP スクリプト自体はシングル スレッドです。pcntl_fork関数を使用して、PHP で子プロセスを「フォーク」する方法があります。しかし、私の知る限り、これは CLI sapi でのみうまく機能します。どの Web サーバー sapi でも、バグがあるか、サポートされていません。

Web リクエストから開始する必要がある場合は、shell_execを使用してマスター PHP CLI プロセスをバックグラウンドで生成し (&最後に追加)、pcntl_fork を使用して作業を分割することができます。

Web リクエストを待っているだけなら、curl_multi関数を使用するという Dagon の提案に従います。しかし、正しく使用すれば、集中的なタスクが他にもある場合、フォークは役に立ちます。

于 2012-11-22T20:23:10.193 に答える
0

http://docs.php.net/スレッド

それがすべての答えです。簡潔に言えば、はい、まさにあなたが想像している通りです (私は願っています)。

于 2012-11-23T19:56:26.913 に答える