3

ねえ、リンクのクリックを追跡し、リンクがクリックされた回数を mysql データベースに保存する簡単な方法を探していました。これを行う方法について確実なアプローチを持っている人はいますか?

ありがとう。

4

3 に答える 3

3

考慮する必要がある最大の事柄の 1 つは規模です。ユーザーの数に応じて、次のような簡単なことを行うことができます。

最初のページの作成 (管理者)

INSERT INTO visit_track_table (id, count, url) VALUES (1, 0, 'page.php');

ページの更新 (ユーザー)

UPDATE visit_track_table SET count=count+1 WHERE url='page.php';

ここでの問題は、ページへの訪問者ごとにこの行をロックする必要があることです。

より良いアプローチは、全体の合計を得るために定期的に再計算されるスケーラブルなセグメンテーションを定義することです。これを行う最も簡単な方法は、ランダムなサフィックスを提供して、同じデータベース行をロックする同時ユーザーを少なくすることです。

スケーラブル

UPDATE visit_track_table SET count=count+1 WHERE url='page.php-N'

このクエリでは、ページごとに 100 行を割り当てたい場合、「-0」から「-100」までの範囲のチューニング パラメータによって -N サフィックスが生成されます。N の最適な値は、ユーザー ベースによって異なります。

集計 (おそらく cron ジョブによって定期的に行われます)

SELECT SUM(count) AS M FROM visit_track_table WHERE url LIKE 'page.php-%'

UPDATE visit_track_table SET count=M WHERE url='page.php'

編集:はい、あなたが向かっているURLを記録する中間ページが必要です。

于 2009-09-01T15:53:27.183 に答える
3

うん。リンクをサイトのリダイレクタ スクリプトに移動させます。これにより、レコードが追跡テーブルに挿入され、ユーザーが最終的なリンクの場所にリダイレクトされます。

于 2009-09-01T15:48:52.870 に答える
1

ajax またはバウンス ページを使用できます。

バウンス: リンクは次のようなカウンター スクリプトに転送されます。 http://www.your-domain.com?click_count.php?forward=http://another-domain.com/destination.html

SQLのようなものを使用するINSERT INTO clicks ('http://another-domain.com/destination.html',1) ON DUPLICATE KEY UPDATE clicks=clicks+1

Ajax: onclick javascript イベントを追加して ajax 呼び出しを送信できます。おそらく同じクリック カウンター スクリプトで、true を返してリンクをたどることができます。

Ajaxメソッドには明らかにjavascriptが必要ですが、これは十分に堅牢ではない可能性があり、その場合、バウンススクリプトはうまく機能し、実際には目立たなくなります

于 2009-09-01T15:54:24.077 に答える