一度に1人しかアクセスできないWebサイトを構築したい。このタスクをどのように達成しますか?
PHPで構築されたWebカウンターを見ましたが、これは正しい解決策ではないと思います。このためのHTTPリクエストはありますか?
前もって感謝します。
一度に1人にしかコンテンツを提供したくない場合、これはサーバーレベルのmodになります。 Nginxの例として、アクティブな接続の数を1に制限します。
サーバー{limit_conn perserver 1; }
これは、接続する他のユーザーに503エラーを提供します。 503エラーを含むカスタムページを提供し、受信した理由をユーザーに警告することができます。
これがニーズに合わない場合は、コンテンツを全員に提供する必要がありますが、一度に1人のユーザーのみがコンテンツを表示できるように「実際の」コンテンツをゲートする必要があります。埋め込みAJAXスクリプトを使用して、全員がダウンロードするページを作成します。スクリプトは、サーバーにAPI呼び出しを行い、「ページ」が占有されているかどうかを尋ねます。そうでない場合、サーバーはそのページをユーザーセッションに割り当て、コンテンツを返します。スクリプトはこれを表示します。現在「ページ」にない人は、待機中のページが提供され、引き続きポーリングされます。これにより、サーバー側でも整然としたキューを形成できます。
その領域に入ると、そのようなスクリプトを作成する方法を尋ねるためにStackoverflowに投稿することをお勧めします。
NodeJS のようなものを使用できます。これは、訪問者用のテンプレートを備えたサーバーサイドjavascriptです。このテンプレートはサーバーサイドJSに接続します(見た目より簡単です)。
NodeJS (または別のサーバーサイドjavascript言語)を使用する利点は、ログインしたユーザーが去った瞬間に別のユーザーが参加できることです。 「私たちには1つの余地があります」信号をブロードキャストできます。また、キューを介して次の信号が参加する場合もあります。また、他のすべてのユーザーに、(カスタマイズされた)エラーページと場合によってはキューの代わりにNiceメッセージを提供できます。
AJAXと同様に機能しますが、逆になります。 AJAXを使用して、サーバーに「まだ入場できますか?」と尋ねます。定期的に、NodeJSのソケットは小さな接続を開いており、サーバーは「OK、今すぐ利用できます」をトリガーします。これにより、よりユーザーフレンドリーな代替手段が可能になります。