如何设置搜索查询的配额,避免分页占用配额

时间:2013-11-12 18:42:46

标签: php jquery mysql sql pagination

我的任务是将用户搜索限制为每天10次查询。

我向用户表count_search添加了列,该表从0开始,并在使用搜索时上升到10。一旦他命中10,查询中断。该值在24小时后重置为0.

这一切都相对简单。我的问题是分页。

我无法区分新搜索和分页查询,因此即使浏览页面,count_search也会上升。

我有什么选择?

我可以想到一件事,只需抓取所有数据并使用jquery制作分页浏览器。

任何想法,解决类似问题的方法?

2 个答案:

答案 0 :(得分:0)

您可以缓存查询(文本查询,而不是结果)并从缓存中获取它。如果它在缓存中,请不要+1,如果不是,则为新查询。缓存可以是$_SESSION,APC,db等。

function query_results( $sqlWithoutPager ) {
  if ( $sqlWithoutPager not exists in user's cache ) {
    counter++
  }

  if ( counter > 10 ) {
    // I think not!
    return
  }

  // add pager to query

  // do query and return 1 page of results
}

我只保存查询缓存,而不是计数器,因为缓存长度是计数器。更多数据库表。

$_SESSION可能是一个坏主意,因为用户可以杀死他们的会话并开始一个新会话(可能)。

APC会起作用,但我不知道你是否拥有它,(而且它不是持久的)。

答案 1 :(得分:0)

我选择了客户端分页,因为这似乎是实现配额问题最简洁的方式。