我是否正确使用此数据库设计的cron作业?

时间:2018-04-08 07:24:08

标签: database cron

我想允许用户跟踪GPU价格,并在价格达到价格时通过电子邮件发送。

我需要存储:

用户数据(id / email / info / email)

视频卡(itemID / price)

用户跟踪视频卡(用户ID /视频卡/ PriceAlertAtThisPRice)

然后运行2个cron作业。 1不断更新视频卡价格表(当没有用户跟踪时,也从被跟踪的GPU列表中删除项目) 和1通过每个用户的跟踪项目,并在需要价格提醒时发送电子邮件(可能每5分钟一次)

这是正确的还是有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

我会:

  1. 跟踪表应使用视频卡ID。

  2. 每X分钟只有1个cron作业来更新所有价格。

  3. 在这项工作结束时,检查每个GPU的价格并与所有目标进行比较。只向每个订阅者发送1封电子邮件,以查看其目标已满足的所有订阅。然后从每个订阅的GPU +目标组合中取消订阅该用户(删除该行)。

  4. 编辑:详细说明最后一部分。 您可能拥有比GPU更多的用户。

    • 从GPU表中选择每个GPU,currentPrice。
    • 从UsersTrackingGPUs表中选择目标为> = GPU.currentPrice的每个用户。
    • 跟踪您选择的内容,这样您只需为每个用户发送1封电子邮件,无论他匹配多少跟踪的GPU。类似的东西:

      found = {user1:[GPU1:$ 50,GPU2:$ 200],...}

    对于发现的每个用户: 发送1封电子邮件,其中包含所有匹配的GPU。

    对于发现的每个匹配用户+ GPU组合: - 从UsersTrackingGPU中删除行。

    对于格式不佳的抱歉道歉,我对移动设备不太熟悉..

    再次编辑:更多细节。

    这样的事情:select * from UsersTrackingGPUs utg join gt g on gtu.id = g.id group by utg.user_id having g.price< = utg.tracking_price

    抱歉,我暂时无法访问PC,但我认为这应该接近您所需要的 - 所有使用所有GPU的用户都会跟踪他们的跟踪价格高于目前的价格。

    希望有所帮助: - )