2

我最近收到一个朋友的挑战。以为我会在这里分享它,因为我没有好的解决方案。

假设我的网站需要访问者点击计数,每次访问时计数都会永久增加。

问题

使用 GET 请求更改服务器状态被认为是不好的做法。因为我想统计进入我网站的用户数量,所以我必须以某种方式存储状态。

我将如何处理这个?我应该打破这种做法并更改 GET 请求的服务器吗?还是有一些更精细的计划我可以完成?

4

2 回答 2

3

您所做的断言通常是正确的。但是在这里,您想要精确地跟踪是否有人发出了 GET 请求。因此,对此类请求进行这种处理是有道理的!

与缓存机制结合使用时,这有点棘手。因为计算访问者的部分​​不能在缓存中,所以您总是需要服务器端来跟踪计数。

其他解决方案包括:

  • Google Analytics 等外部工具使用带有跟踪图像的 JavaScript(检索图像是一种模拟 POST 请求的方法,但无论如何它只是 GET),并结合 cookie 来仅跟踪唯一身份访问者。
  • 日志分析是另一种选择。Web 服务器可以将每个请求连同其他信息(如 IP 地址、用户代理)一起写入文件。分析访问日志可以解决。

[编辑] 我特别喜欢跟踪图像。使这两种解决方案更容易。

于 2012-08-22T21:28:51.690 回答
0

我记录访问的方法是使用 PHPauto_prepend_fileauto_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

希望这可以帮助!

于 2012-08-22T21:26:24.967 回答