php 动态获取数据,php – 创建API端点,用于根据时间获取动态数据

我有一个刮刀,定期从新闻网站上抓取文章并将它们存储在数据库[MYSQL]中.

刮擦的工作方式是先将最旧的物品刮掉,然后再转到更近期的文章.

例如,在1月1日写的文章将首先被删除并给出ID 1,并且在1月2日被删除的文章将具有ID 2.

因此,与旧文章相比,最近的文章将具有更高的ID.

有多个刮刀同时运行.

现在我需要一个端点,我可以根据文章的时间戳查询,每次获取时我也有10篇文章的限制.

例如,当有20篇文章以时间戳1499241705发布时,并且当我查询时间戳为1499241705的终端时,会出现问题,我会检查所有文章是> = 1499241705,在这种情况下,我总会每次获得相同的10篇文章,将条件更改为>这意味着我会跳过11-20的文章.添加另一个where子句以检查id是不成功的,因为当刮刀并发运行时,可能无法始终以正确的日期顺序插入文章.

有没有办法可以查询这个终点,这样我就可以随时获得一致的数据,包括最新的文章,然后是旧的文章.

编辑:

+-----------------------+

| id | unix_timestamp |

+-----------------------+

| 1 | 1000 |

| 2 | 1001 |

| 3 | 1002 |

| 4 | 1003 |

| 11 | 1000 |

| 12 | 1001 |

| 13 | 1002 |

| 14 | 1003 |

+-----------------------+

最后一个时间戳和ID通过WHERE子句发送.

例如.

$this-> db-> where(‘unix_timestamp< =',$timestamp);

$this-> db-> where(‘id

$this-> db-> order_by(‘unix_timestamp’,’DESC’);

$this-> db-> order_by(‘id’,’DESC’);

在查询时间戳为1003时,将获取ID 14和4.但是在下一次调用期间,id 4将是偏移量,从而不会获取id 13并且仅在下一次获取id 3时.因此数据将丢失.

解决方法:

两部分:时间戳和id.

WHERE timestamp <= $ts_leftoff

AND ( timestamp < $ts_leftoff

OR id <= $id_leftoff )

ORDER BY (timestamp DESC, id DESC)

因此,假设id是唯一的,如果许多行具有相同的时间戳,则顺序是完全确定的并不重要.

有一种语法,但不幸的是它没有很好地优化:

WHERE (timestamp, id) <= ($ts_leftoff, $id_leftoff)

所以,我建议不要使用它.

标签:php,mysql,database,rest,codeigniter

来源: https://codeday.me/bug/20190701/1349653.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值