Php 当行不断更改时,按上次活动对数据分页

Php 当行不断更改时,按上次活动对数据分页,php,mysql,pagination,Php,Mysql,Pagination,我正在寻找分页方法,用于不断变化的数据(大约每分钟1-3次更新) 我有一个具有以下结构的对话列表 conversation : id, user_id, last_message, last_active 最活跃的对话每分钟更改1到3次,因此每当注册更改时,last\u active列都会更新。一个用户可以有100多个对话 我遇到的问题是,当last\u active值发生变化时,对数据进行分页 如果数据是静态的,只需在MySQL上使用“ORDER BY DESC last_active LI

我正在寻找分页方法,用于不断变化的数据(大约每分钟1-3次更新)

我有一个具有以下结构的对话列表

conversation : id, user_id, last_message, last_active
最活跃的对话每分钟更改1到3次,因此每当注册更改时,
last\u active
列都会更新。一个用户可以有100多个对话

我遇到的问题是,当
last\u active
值发生变化时,对数据进行分页

如果数据是静态的,只需在MySQL上使用“ORDER BY DESC last_active LIMIT n,15”查询进行分页即可。但是,由于最后一个活动项目是不断变化的,项目的顺序可能会发生变化,因此永远不会出现在列表中(或多次出现)

例如,如果限制为每页3,我的数据如下所示:

{id : 1, last_active : 10:14:41} 
{id : 2, last_active : 10:14:31}
{id : 3, last_active : 10:13:55}
[Page - 1]

{id : 4, last_active : 10:13:30}
{id : 5, last_active : 10:12:06}
{id : 6, last_active : 10:11:10}
[Page - 2]

{id : 7, last_active : 10:10:20}
{id : 8, last_active : 10:10:06}
{id : 9, last_active : 10:09:22}
[Page - 3]
现在,当用户在第二页时,如果对
id=7
执行更新,则
orderby
子句会将其推到查询的顶部,并且它永远不会显示在第3页上


组织这些数据的最佳方式是什么,这样我就可以在不丢失行或复制行的情况下对这些数据进行分页

我看到了几种方法。问题在于,您需要定义用户期望是什么:

1) 我希望我的数据始终是最新的。在这种情况下,我希望并理解第2页是最新的,我以前看到的第1页可能已经更改。如果我希望我的数据真正是最新的,我会同意的

2) 我不太在乎第二个结果,如果#7没有出现,我可能会被甩了,因为它在某个时候交换了页面。在本例中,我希望显示第2页的结果,这些结果在我最初请求第1页时是有效的。这将涉及缓存或添加一些其他字段。这可能会很不方便,但如果用户对方便性/清晰性而不是精确的数据库数据更感兴趣,那么我怀疑他们是否会一页一页地(比如说20页)查找项目,这意味着您只需要在初始获取时缓存项目的前几页

然后,如果1)分页是2-5,2)缓存的时间不是太长(比如10分钟-如果第1页在午餐休息时已经在那里坐了一个小时,我们不希望有人点击第2页),则调整代码以从这些缓存结果中提取

我认为大多数终端用户都属于#2类。如果他们没有,那么他们可能是足够的技术人员,不会感到困惑,你也可以添加一个注释