ホームページ  >  記事  >  バックエンド開発  >  swoole http サーバーはジャンプ機能を実装しているため、プログラムを実行し続ける必要はありません。

swoole http サーバーはジャンプ機能を実装しているため、プログラムを実行し続ける必要はありません。

WBOY
WBOYオリジナル
2016-10-11 14:23:331821ブラウズ

swoole_http_responseメソッドのヘッダー、ステータス、endを使用してジャンプを実現します

コードは次のとおりです

リーリー

しかし、redirect() を使用した後、プログラムは中断されずに実行を続けます。

その後、実行の継続を防ぐために例外をスローしてプログラムを中断しましたが、このメソッドによりワーカーが再起動されてしまいました。

質問:

ページがジャンプした直後にプログラムを中断し、実行を続行せずにページがすぐにジャンプするようにする良い方法はありますか?例外をスローしてプログラムを中断するメソッドは使用しないようにする必要があります

返信内容:

swoole_http_responseメソッドのヘッダー、ステータス、endを使用してジャンプを実現します

コードは次のとおりです

リーリー

しかし、redirect() を使用した後、プログラムは中断されずに実行を続けます。

その後、実行の継続を防ぐために例外をスローしてプログラムを中断しましたが、このメソッドによりワーカーが再起動されてしまいました。

質問:

ページがジャンプした直後にプログラムを中断し、実行を続行せずにページがすぐにジャンプするようにする良い方法はありますか?例外をスローしてプログラムを中断するメソッドは使用しないようにする必要があります

最初は exit(0) と言いたかったのですが、少し違う気がしました

私は swoole を使用したことがありません。swoole のドキュメントを見ただけです。

swoole_http_response->end

HTTPレスポンスボディを送信してリクエスト処理を終了します。

swoole_http_response->end(string $html);
終了操作の後、HTML コンテンツがクライアントのブラウザに送信され、$request/$response オブジェクトが破棄されます。

KeepAlive がオンになっている場合、接続は行われます。維持され、サーバーは次回のリクエストを待機します
KeepAlive が有効になっていない場合、サーバーは接続を切断します


end() の後、$response オブジェクトは破棄され、http レスポンスが完了し、ビジネス コードは実行されません。

http://wiki.swoole.com/wiki/p...

reactorがnginx、workerがphp-fpmであることが分かります。リアクター スレッドは、ネットワーク リクエストを非同期かつ並行して処理し、処理のためにワーカー プロセスに転送します。リアクターとワーカーは IPC を介して通信します。

Swoole のリアクター、ワーカー、および task_worker を密接に組み合わせて、より高度な使用法を提供できます。


より一般的な比喩では、サーバーが工場であると仮定すると、リアクターはプロジェクトの受注を支援する販売になります。営業マンは注文を受けると、顧客が望むものを作るために仕事に取り掛かります。 task_worker は、従業員が仕事に集中できるように、従業員がいくつかの雑務を行うのを支援できる管理スタッフとして理解できます。

ワーカーを再起動しても効果がないようです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。