0

トラフィックの多い Web サイトで、既存の訪問者追跡スクリプトの更新に取り組んでいます。スクリプト自体に問題があるのではなく、複数のリクエストがあった場合に発生する問題があることに気付きました。ユーザーが私のサイトへの特定のリンクをダブルクリックし、事実上同時に 2 つの要求が行われたとします。リクエスト 1 が処理され、セッションが作成されます。次にスクリプトは、訪問者レコードをデータベースに追加します。同時に、リクエスト 2 が処理されます。セッションが設定されているかどうかを確認するため、リクエスト 1 と同じことを行います。これで、実際には 1 つあるはずのデータベースの訪問者テーブルに、2 つの異なるセッションと 2 つのレコードがあります。現在のセッションのセッション ID は、最後に終了したリクエストから取得されます。

だから、私がやろうとしているのは、これが起こらないようにすることです。同じ訪問者から 100 件の同時リクエストがあったとしても、セッション ID を 1 つだけ作成し、何よりも、データベースの訪問者テーブルに 1 つのレコード (100 レコードではなく) を挿入する必要があります。これには、1 つの要求が既に行われたことを数ミリ秒で判断することが含まれます。何か案は?

4

2 に答える 2

0

私のJavaアプリケーションには次の回避策があります。最初に php サーバーにアクセスするときに、一意のセッション ID を確立するブロッキング ping 呼び出しを送信します。その後、php サーバーへの同時リクエストを開始します。これは、たとえば init ブロックの Web ページからも可能である必要があります。

于 2014-11-02T06:05:42.343 に答える