为1小时/24小时内的点击次数编写程序(PHP)

为1小时/24小时内的点击次数编写程序(PHP),php,mysql,Php,Mysql,我想写一个点击封顶程序——基本上是交通管制。(用PHP) 我的目标是记录(到文本文件)每小时的点击次数(使用增量计数器)。从这里开始,我将编写一个程序,根据是否满足点击上限重定向流量。所以对其进行伪编码 if ($cap <= $currentCount){ //cap is the max, currentCount is the current click rate go here }else{ go here } 感谢所有帮助过我的人 我首先要看jQuery 真

我想写一个点击封顶程序——基本上是交通管制。(用PHP)

我的目标是记录(到文本文件)每小时的点击次数(使用增量计数器)。从这里开始,我将编写一个程序,根据是否满足点击上限重定向流量。所以对其进行伪编码

if ($cap <= $currentCount){   //cap is the max, currentCount is the current click rate
    go here
}else{
    go here
}

感谢所有帮助过我的人

我首先要看jQuery

真正捕获鼠标点击的唯一方法是客户端。在这种方法中,每次点击都会向服务器发送AJAX请求,或者跟踪计数器并每隔这么多分钟将其发送到服务器,等等。但是要注意客户端方法很容易被其他方伪造,从而触发脚本,即使它不是必需的

但是,您可能需要详细说明单击的确切含义,因为上述情况似乎不太可能发生。如果你是指访问请求,你可以

  • 解析Apache访问日志文件以查找最近一小时内的请求
  • 在每个请求中向数据库输入一个条目
  • 为每个请求写入一个单独的文件
  • 我推荐第一种方法,因为这对您的性能影响最小


    希望我已经完全回答了:)

    使用文本文件是一个非常糟糕的主意,因为有两件事:

  • 并发访问。如果两个用户同时单击会怎么样?幸运的是,这两个文件中最快的一个将打开文本文件并写入其中。如果存在文件锁定,第二个文件将无法写入,因为它无法锁定文件,或者(如果您编写了一些复杂的内容),它将等待并占用处理时间,直到它能够打开文件。如果没有文件锁定,两个进程将同时打开同一个文件,并且只有最后保存文件的进程才会实际保存其更改。本质上,要么这些用户中只有一个会被登录,要么第二个用户会经历令人讨厌的延迟

  • 文件可能会变大。它越大,添加到日志和检索日志所需的时间就越长

  • 您应该使用数据库表(如MYSQL),而不是使用文本文件。这真的很容易。(如果您使用MYSQL,请使用mysqli或pdo。不要使用MYSQL_*因为它已被弃用。互联网上有很多MYSQL_*函数的示例,因为它们都是旧示例。不要使用它们。)

    您所要做的就是编写一些基本代码,每当有人单击您的页面时,将一行插入到数据库表中。这个表应该有一个名为ClickTime的timestamp列,它被设置为自动将自己设置为当前的\u timestamp,而无需执行任何操作。如果您需要的唯一信息是发生了单击,您只需说

    INSERT INTO clicklogtable
    
    如果您需要跟踪IP地址,它更像

    INSERT INTO clicklogtable (ClickIP) VALUE ('xxx.xxx.xxx.xxx')
    
    然后,您可以要求数据库提供过去24小时内的行数:

     SELECT COUNT(ClickID) AS NumberOfClicks FROM clicklogtable
     WHERE ClickTime >= NOW() - INTERVAL 1 DAY
    

    这里的“NumberOfClicks”值是你对最后一天点击次数的回答。同样的语法可以让您在最后一小时、最后45分钟或任何其他您想要的时间间隔内完成提问。

    您的问题需要做一些工作。你是在问如何用PHP读/写文件吗?我是在问如何记录60分钟内的点击次数。所以从现在到60分钟后,有多少次点击?然后说。。。从现在起45分钟到1小时45分钟之间。。。。有多少次点击?我的目标是能够随时确定在过去一小时内有多少次点击。您希望每小时还是每天点击?你想存储计数器以前的值吗,还是每次都重置?jegesh-我理想情况下会有单独的计数器-一个记录点击总数并持续存储它们,另一个记录每小时并重置,还有一个记录每24小时然后重置。这可能是一个过度设计的解决方案,但Ian Barber(谷歌的)实现了一个事件流处理系统,该系统可以处理与时间链接的窗口。无需单击鼠标即可播放幻灯片。我指的是访问请求。因此,解析apache访问日志文件听起来最有意义。如果将这些请求重定向到单独的Web主机,则可以使用PHP将一行内容写入文本文件并创建自定义日志,类似于s每个重定向的apache访问日志,这样您就可以单独跟踪每个重定向apache访问日志存储所有请求,包括css、js、图像等。因此,如果您解析日志,您应该确保过滤掉这些请求,否则一次用户单击将获得相当大的偏移量。
     SELECT COUNT(ClickID) AS NumberOfClicks FROM clicklogtable
     WHERE ClickTime >= NOW() - INTERVAL 1 DAY