sql >> データベース >  >> RDS >> Sqlserver

サーバーは複数のクライアントからのWebサービス要求をどのように処理しますか

    これは一般的な概念であり、Android固有のものではありません

    通常、各ユーザーはページのHTTPリクエストを送信します。サーバーはリクエストを受信し、それらを別のワーカー(プロセスまたはスレッド)に委任します。

    指定されたURLに応じて、サーバーはファイルを読み取り、ユーザーに送り返します。ファイルがPHPファイルなどの動的ファイルの場合、ファイルはユーザーに返送される前に実行されます。

    要求されたファイルが返送されると、サーバーは通常、数秒後に接続を閉じます。

    Webサーバーのしくみ をご覧ください。

    編集:

    HTTPの場合、接続ベースのプロトコルであるTCPを使用します。つまり、クライアントはサーバーとの通信中にTCP接続を確立します。

    複数のクライアントが、同じ宛先マシンの同じ宛先ポートに同時に接続できます。サーバーは複数の同時接続を開くだけです。

    Apache(および他のほとんどのHTTPサーバー)には、マルチプロセッシングモジュール(MPM)があります。これは、接続を処理するためにApacheスレッド/プロセスを割り当てる役割を果たします。これらのプロセスまたはスレッドは、相互にブロックすることなく、独自の接続で並行して実行できます。また、ApacheのMPMは、接続が開いていない場合でも「スペア」スレッドまたはプロセスを開いたままにする傾向があるため、後続の要求を高速化できます。

    注:

    マルチスレッドに関する最も一般的な問題の1つは、「競合状態」- 2つのリクエストが同じことをしている場合(同じことをするための「レーシング」)、それが単一のリソースである場合、そのうちの1つが勝ちます。両方がデータベースにレコードを挿入する場合、両方が同じIDを取得することはできません。どちらかが勝ちます。したがって、コードを書くときは、他のリクエストが同時に行われ、データベースを変更したり、ファイルを書き込んだり、グローバルを変更したりする可能性があることを認識するように注意する必要があります。



    1. Hibernate SQLクエリ、mysqlのTEXTデータ型の問題

    2. ORA01400およびORA02296:NULLを挿入したり、追加された列のプロパティをNOTNULLに変更したりすることはできません。

    3. 移行実行時のエラー:sqlalchemy.exc.CompileError:PostgresqlENUMタイプには名前が必要です

    4. mysql-2つの制限が必要ですか?