短い接続
接続->データ転送->接続を閉じる
例 HTTP はステートレスな短いリンクであり、ブラウザとサーバーが HTTP 操作を実行するたびに接続が確立されますが、タスクが完了すると接続は終了します。
具体的には、ブラウザ クライアントが TCP 接続を開始して確立します -> クライアントが HttpRequest メッセージを送信します -> サーバーがメッセージを受信します -> サーバー ハンドルが呼び出され、フロント エンドに HttpResponse メッセージを送信しますsocket.close メソッドを送信した直後 - > クライアントが応答メッセージを受信 - > クライアントは最終的にサーバーから TCP 接続を切断する信号を受信します - > クライアントは、具体的には close メソッドを呼び出すことによって TCP 接続を切断します。 (推奨学習: PHP プログラミング入門から習熟まで )
接続が短いとは、SOCKET を接続した後、データの送受信を行った直後に接続が切断されることを意味するとも言えます。
データ受信後に接続が切断されるため、データを受け付けて処理するたびに連絡することはありません。これが、HTTP プロトコルがステートレスである理由の 1 つです。
長い接続
接続->データ転送->接続を維持->データ転送->...... ->一方が接続を閉じるまで、クライアントが接続を閉じる可能性があります。
長い接続とは、SOCKET 接続を確立した後、使用するかどうかに関係なく接続が維持されることを意味しますが、セキュリティは貧弱です。
HTTP による短いリンクと長い接続の選択:
HTTP はステートレスです。つまり、ブラウザーとサーバーが HTTP 操作を実行するたびに、接続は一度確立されますが、タスクが完了すると接続は終了します。クライアント ブラウザによってアクセスされる HTML またはその他の種類の Web ページに、JavaScript ファイル、画像ファイル、CSS ファイルなどの他の Web リソースが含まれている場合、ブラウザはそのような Web リソースに遭遇するたびに、HTTP セッション# を作成します。
##HTTP1.1とHTTP1.0と比較すると、最大の違いは永続接続サポートの追加(最新のHTTP1.1ではキープアライブを明示的に指定できるようです)ですが、ステートレスであることに変わりはありません。信頼できません。 ブラウザまたはサーバーがこのコード行 Connection:keep-alive を追加すると、#TCP 接続は送信後も開いたままになるため、ブラウザは同じ接続を渡し続けてリクエストを送信できます。 。接続を維持すると、リクエストごとに新しい接続を確立するのに必要な時間が節約され、帯域幅も節約されます。
長時間接続を実現するには、クライアントとサーバーの両方が長時間接続をサポートする必要があります。
長い接続と短い接続をいつ使用するか?長い接続は主に、頻繁な操作やポイントツーポイント通信に使用され、接続数が多すぎることはできません。
各 TCP 接続には 3 段階のハンドシェイクが必要であり、時間がかかります。各操作を接続してから操作すると、処理速度が大幅に低下するため、操作ごとに接続が切断されることはなく、処理が遅くなります。 TCP 接続を確立せずにデータ パケットを送信しても問題ありません。 例: データベース接続は長い接続を使用します。短い接続で頻繁に通信するとソケット エラーが発生し、頻繁にソケットを作成することもリソースの無駄になります。
WEB ウェブサイトのような HTTP サービスでは、長い接続はサーバーに一定量のリソースを消費するため、通常、短いリンクが使用されます。また、WEB ウェブサイトと同様に、数千、場合によっては数億のリンクが頻繁に使用されます。クライアント接続に短い接続を使用すると、リソースが節約されます。長い接続を使用し、同時に数千のユーザーがいる場合、各ユーザーが 1 つの接続を占有することが考えられます。したがって、同時実行量は多くなりますが、頻繁な操作が必要ない場合、各ユーザーは短い接続を使用する必要があります。 つまり、長い接続と短い接続の選択は状況によって異なります。
特定のネットワーク アプリケーションの場合:http 1.0一般就指短连接,smtp,pop3,telnet这种就可以认为是长连接。一般的网络游戏应用都是长连接
以上がPHPのロング接続とショート接続の利用シナリオの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。