嘿,我一直在寻找一种简单的方法来跟踪链接的点击次数,并在 mysql 数据库中存储该链接被点击的次数。有人对如何做到这一点有可靠的方法吗?
谢谢。
您需要考虑的最重要的事情之一是规模 - 根据您拥有的用户数量,您可以做一些简单的事情,例如:
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 行,则 -N 后缀将由调整参数生成,该参数的范围从“-0”到“-100”。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 或退回页面:
Bounce:链接转发到一个计数器脚本,例如, http://www.your-domain.com?click_count.php?forward=http://another-domain.com/destination.html
像使用 sqlINSERT INTO clicks ('http://another-domain.com/destination.html',1) ON DUPLICATE KEY UPDATE clicks=clicks+1
Ajax:您可以添加一个 onclick javascript 事件来发送一个 ajax 调用,也许是相同的点击计数器脚本,然后返回 true 以跟随链接。
Ajax 方法显然需要 javascript,这对您来说可能不够健壮,在这种情况下,弹跳脚本会很好,而且真的不会引起注意