ねえ、リンクのクリックを追跡し、リンクがクリックされた回数を mysql データベースに保存する簡単な方法を探していました。これを行う方法について確実なアプローチを持っている人はいますか?
ありがとう。
考慮する必要がある最大の事柄の 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 の最適な値は、ユーザー ベースによって異なります。
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を記録する中間ページが必要です。
うん。リンクをサイトのリダイレクタ スクリプトに移動させます。これにより、レコードが追跡テーブルに挿入され、ユーザーが最終的なリンクの場所にリダイレクトされます。
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が必要ですが、これは十分に堅牢ではない可能性があり、その場合、バウンススクリプトはうまく機能し、実際には目立たなくなります