DiscordPHP ボットを使用しており、Cookie を必要とする Web ページをダウンロードしようとしています。 ReactPHP httpブラウザはCookieをサポートしていないため、Guzzleでcurlハンドラを使用する必要があるようです。
私は次の最小限のスクリプトを作成しました:
リーリーこれは、ハング
をチェックするために addPeriodicTimer を追加したり、手動で tick()
を呼び出したりすることなく、すぐに終了します。
リーリー
リーリー
tick() を使用するというアイデアは、
github.com のこの 73 コメントのクローズド スレッドから生まれました。
これはブロッキング呼び出しです。
呼び出しを使用して同期実行を約束しますが、ReactPHP は本当に非同期ですか?長い
for ループを実行します。どちらもループをブロックします。
Cookie jar を使用して HTTP GET を開始し、ブロッキング呼び出し (
->wait() や手動で
tick()curl ハンドラーを実行しますか?
强>
さて、ReactPHP は Cookie を自動的に設定しません。このトピックについて議論するチケットがすでに存在します: https://github.com/reactphp/http/issues/445 しかし、手動で設定することもできます。 HTTP Cookie ヘッダー。
Guzzle が ReactPHP のイベント ループをブロックするため、Guzzle で ReactPHP を使用すると機能しないことにも言及する価値があります。これは、複数のリクエストを送信できるが、それ以外のことを非同期的に行うことはできないことを意味します。