我最近收到一个朋友的挑战。以为我会在这里分享它,因为我没有好的解决方案。
假设我的网站需要访问者点击计数,每次访问时计数都会永久增加。
问题
使用 GET 请求更改服务器状态被认为是不好的做法。因为我想统计进入我网站的用户数量,所以我必须以某种方式存储状态。
我将如何处理这个?我应该打破这种做法并更改 GET 请求的服务器吗?还是有一些更精细的计划我可以完成?
我最近收到一个朋友的挑战。以为我会在这里分享它,因为我没有好的解决方案。
假设我的网站需要访问者点击计数,每次访问时计数都会永久增加。
使用 GET 请求更改服务器状态被认为是不好的做法。因为我想统计进入我网站的用户数量,所以我必须以某种方式存储状态。
我将如何处理这个?我应该打破这种做法并更改 GET 请求的服务器吗?还是有一些更精细的计划我可以完成?
您所做的断言通常是正确的。但是在这里,您想要精确地跟踪是否有人发出了 GET 请求。因此,对此类请求进行这种处理是有道理的!
与缓存机制结合使用时,这有点棘手。因为计算访问者的部分不能在缓存中,所以您总是需要服务器端来跟踪计数。
其他解决方案包括:
[编辑] 我特别喜欢跟踪图像。使这两种解决方案更容易。
我记录访问的方法是使用 PHPauto_prepend_file
或auto_append_file
. 在这些文件中,您有以下内容:
error_reporting(0);
$conn = mysqli_connect('localhost', 'visitor_counter', 'password', 'visitors');
$ip = mysqli_real_escape_string($conn, $_SERVER['REMOTE_ADDR']);
$query = "UPDATE `visits` SET `count` = `count` + 1 WHERE `ip` = '$ip'";
mysqli_query($conn, $query);
我使用共享主机,所以我必须使用这样的.htaccess
文件:
php_value auto_prepend_file /php/head.php
希望这可以帮助!