1

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

我在 users 表count_search中添加了从 0 开始到 10 的列作为使用搜索。一旦他达到 10,查询就会中断。该值在 24 小时后重置为 0。

这一切都比较简单。我的问题是分页。

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

我有哪些选择?

我可以想到一件事,只需获取所有数据并使用 jquery 进行分页浏览器端。

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

4

2 回答 2

0

我选择了客户端分页,因为这似乎是解决配额问题的最干净的方法。

于 2013-11-15T19:13:27.920 回答
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 可以工作,但我不知道你是否拥有它,(而且它不是持久的)。

于 2013-11-12T20:41:25.137 回答