0

我正在构建两个 cron 作业,它们会根据标签定期搜索新推文和 instagram 照片(可能还有更多服务)。

内容被保存到数据库,稍后输出到网页。这允许更快的加载,更重要的是能够删除某些推文,使其不显示。

我想确保没有帖子在数据库中保存两次,并且不确定哪种方法最好。以下是我考虑的一些选项:

  • 我使用 Laravel 并且有能力要求 postID 是唯一的,当我尝试保存已经存在的帖子时,这会使数据库拒绝。不过,这可能会导致不必要的 sql 查询。
  • 我可以检查数据库以获取最新保存的帖子 ID,并在到达该帖子后停止循环。
  • 至少在 twitter 中,我可以传递参数 since_id,这样我就可以获取最新的帖子。但是我在 instagram 中没有找到相同的参数,它也不适用于 html-scraping。
4

2 回答 2

2

Twitter 提供“created_at”值,为您提供创建推文的日期和时间。

每次您的 cron 作业运行时,存储日期和时间,然后在下一次运行时,仅在日期/时间早于“created_at”值的情况下上传推文。

抱歉,我对 Instagram 不太熟悉 - 但我认为同样的逻辑也适用。

["created_at":"Wed Aug 27 13:08:45 +0000 2008"][1]
于 2013-07-25T14:02:17.713 回答
0

即使 Instagram 中没有“since_id”参数,您基本上也可以做同样的事情。

Get the id of the last post you have in your Database. Sort you array of new Instagram posts by id. You should then be able to easily remove from the array the posts that have an id lower than the last id in your database.

Once this is done, you can save them in your database.

Note that the same thing could be done using timestamps instead of ids.

于 2013-07-25T14:03:59.680 回答