ホームページ >PHPフレームワーク >Swoole >swoole は fd が接続されているかどうかをどのように判断しますか?

swoole は fd が接続されているかどうかをどのように判断しますか?

(*-*)浩
(*-*)浩オリジナル
2019-12-16 13:57:445223ブラウズ

swoole は fd が接続されているかどうかをどのように判断しますか?

心拍とは何ですか?

ハートビートとはその名の通り、物事が生きているか死んでいるかを判断する基準であり、swooleではハートビートを使って接続が正常か切断されているかを判断します。

(推奨学習: SWOOLE ビデオ チュートリアル )

誰もが知っているように、5 元のグループはネットワーク接続をロゴにして作成します。接続するには 1 回のハンドシェイクが必要で、接続を切断するには 4 回のハンドシェイクが必要です。サーバーとクライアントのどちらが接続の終了を開始したかに関係なく、4 回手を振るプロセスが完了します。このようにして、すべてが完璧です。システムは fd を再利用し、アプリケーション層も、 onClose コールバック。

fd とは何ですか?

fd の学名はファイル記述子です。すべてはファイルであるという Unix の哲学では、この fd は、5 タプルのネットワークを表すためにシステム層によってビジネス層に公開される識別子です。繋がり。

単純にインデックスとして理解することができ、この fd を操作することで、システム層は該当するコネクションを見つけ、ネットワーク瞳孔へのデータ送信やコネクションのクローズなどの一連の操作を行うことができます。

心臓はなぜ鼓動するのですか?

先ほど述べたように、接続を閉じたい場合は、ビジネス層の fd で接続を閉じる操作を開始できます。swoole を例に挙げます。通常の状況では、4 つのウェーブが完了し (swoole には onClose コールバックがあります)、システムは fd をリサイクルして他の接続に割り当てます。

なぜシステムは fd をリサイクルするのですか? fd リソースには限りがあるため、再利用する必要があります。

ただし、蘭翔訓練中に突然ネットワークケーブルが抜かれたり、光ケーブルが掘り出された場合など、サーバーは接続の異常を感知できず、実際には接続に失敗している場合があります。リサイクル メカニズム。このタイプの接続ではすべての fd が使い果たされ、システムが新しい接続リクエストを受け付けなくなるため、ハートビート メカニズムが存在します。

ハートビートのメカニズムとは何ですか?

ハートビート メカニズムは、接続が生きているかどうかを判断するためにビジネス層によって提供される方法であり、システムは接続が失敗したかどうかを判断できます。一般に、実装方法は 2 つあります:

1:

クライアントは定期的にハートビート パケットを送信して、私がまだ生きていることをサーバーに伝えます。サーバーは定期的にすべてのクライアントのリストをチェックして、時刻が更新されているかどうかを確認します。最後のハートビート パケットが通過しました。長すぎる場合は、ハートビートがないと見なされ、接続が切断されていると判断され、接続がアクティブに閉じられます。

2: サーバーは定期的にすべてのクライアントに「まだ生きていますか?」と尋ねます。生きているならフィードバックをください、フィードバックを受け取らないクライアントは容赦なく殺されます。

以上がswoole は fd が接続されているかどうかをどのように判断しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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