検索

ホームページ  >  に質問  >  本文

非同期パフォーマンスを最大化: ノンブロッキング I/O の ReactPHP イベント ループを介して Guzzle 7 のパワーを最大限に引き出します。

DiscordPHP ボットを使用しており、Cookie を必要とする Web ページをダウンロードしようとしています。 ReactPHP httpブラウザはCookieをサポートしていないため、Guzzleでcurlハンドラを使用する必要があるようです。

私は次の最小限のスクリプトを作成しました:

リーリー

これは、ハングをチェックするために addPeriodicTimer を追加したり、手動で tick() を呼び出したりすることなく、すぐに終了します。 リーリー

タイマーを使用すると、期待どおりに動作します:

リーリー

tick() を使用するというアイデアは、github.com のこの 73 コメントのクローズド スレッドから生まれました。

同様の質問がいくつかありますが、この問題を解決できるものはないようです:

Cookie jar を使用して HTTP GET を開始し、ブロッキング呼び出し (->wait() や手動で tick()curl ハンドラーを実行しますか?

P粉043566314P粉043566314270日前500

全員に返信(1)返信します

  • P粉384366923

    P粉3843669232024-02-18 11:41:28

    さて、ReactPHP は Cookie を自動的に設定しません。このトピックについて議論するチケットがすでに存在します: https://github.com/reactphp/http/issues/445 しかし、手動で設定することもできます。 HTTP Cookie ヘッダー。

    Guzzle が ReactPHP のイベント ループをブロックするため、Guzzle で ReactPHP を使用すると機能しないことにも言及する価値があります。これは、複数のリクエストを送信できるが、それ以外のことを非同期的に行うことはできないことを意味します。

    返事
    0
  • キャンセル返事