0

そこでまず、stackoverflowとgoogleでこの質問を確認して調査しましたが、同様の質問はありませんでした。

連続訪問数のカウントとSQLクエリを確認しました:30日間連続して毎日サイトにアクセスしましたが、役に立ちません。

だから私の質問は、ユーザーがサイトに連続してx回アクセスしたかどうかをテストするこのアクションをどこに実装するかです。そこに配置したリンクでは、サーバー側でチェックインしますが、ユーザーがアクセスするたびに、あまり最適化されていないと思います。 Webサイトのクエリがトリガーされ、今日の日付が日付以上であるかどうかが確認されLastVisitます。

私のアプリケーションでは、ユーザーが自分の情報を取得するためにページをロードするたびにクエリを実行していますが、

update userInfo 
set DaysConsecutivelyVisited=DaysConsecutivelyVisited+1
when DATEDIFF(CURDATE(),LastVisit)=1

そうすれば、ユーザーがページをロードするたびに2つのクエリが発生するので、サーバー側ではなくクライアント側でこれを行う方がよいと思いました。ドキュメントに属性または非表示のスパンを配置します

<body data-lastvisit="2012-03-25" >

javascriptで分析を行い、$("data-lastvisit")昨日と等しい場合はajaxリクエストを送信して更新しますDaysConsecutivelyVisited

あなたはどう思いますか、それは良い考えですか?

4

1 に答える 1

2

比較するパラメータが必要になります。これは、残念ながら、常にデータベーステーブル内のデータです。実行できる唯一のことは、ページロードでuserinfoを取得することです。これには、フィールドが含まれている可能性がありますlast_visited。日付が今日の日付と等しくない場合は、登録してください。

さらに、フィールドconsecutive_visitsを作成し、日付の差が1日よりも大きい場合は0にリセットし、差が1日以下の場合はインクリメントします。このようにして、ページロードでユーザーオブジェクトをフェッチした後、常にユーザーオブジェクトに連続してアクセスした回数を把握できます。

この場合、ajaxリクエストの必要性はまったくありません。これは、現在のユーザーデータとDate()インスタンスまたはタイムスタンプとの比較にすぎません。すべての計算はサーバーサイドで実行でき、値が異なる場合に備えて追加のMySQLクエリのみが必要です。

于 2013-03-26T13:56:33.260 に答える