2017-02-14 39 views
2

我正在使用Laravel 5.3,并且我构建了一个应用程序,我们可以将其视为像电子商务应用程序那样的应用程序。我基本上希望允许用户在应用程序内(而不是通过电子邮件)留下他们的订单评论,但让他们在购买后等待X天。像eBay几乎...如何让用户用Laravel等候

但是,什么是用户之前创建一个等待周期可以执行这样的操作通常的惯例?我一直在考虑是否应该设置cron作业,以在X天后向用户发送请求,或者可能以某种方式将其记录在数据库中,但我认为在拥有大量用户时数据库很重。

任何想法将不胜感激。

更新:的想法是在用户强制的等待时间。在等待期后,他们不能留下评论,直到

+0

http://stackoverflow.com/questions/24319734/automatic-mail-sending-on-specific-dates-in-php –

回答

0

据我了解你的使用情况,您需要一个持久性存储方法要记住因为T多少天过去了他购买了该物品。还有,一般的持久性存储4种方法:

1饼干

  • 存储:客户端(但安全,因为Laravel进行加密和签名的所有cookie)
  • 具体:独有用户计算机和域
  • 余辉时间:能持续下去,除非用户明确删除了Cookie
  • 常见应用实例:保存的喜好

2。会议

  • 存储:服务器端(取决于驱动程序)
  • 具体:具体到用户(而是取决于驱动程序)
  • 余辉时间:通常到期后几个小时,但可以延长
  • 常见应用实例:持久层从一个请求到另一个(如购物车,动作后弹出通知触发)

3.缓存

  • 存储:服务器端
  • 具体:一般应用特定的(而且可以由用户指定)
  • 余辉时间:一般一个小时到几天的
  • 常见应用实例:应用特定的存储用例(例如总数命中,最热门的网页,数据库查询缓存,视图缓存)

4.数据库

  • 存储:服务器端
  • 具体:可以是用户或特定
  • 应用
  • 持续时间:永远直到删除
  • 常见用例:长期数据持久层(例如用户详细信息)

现在,如果您想在购买几天后向用户发送自动提醒,则持久层必须是服务器端。这就排除了Cookie,而且缓存也不是一个好方法(因为缓存最好用于应用程序特定的数据,而不是用户特定的数据)。但是,如果您正在寻找由用户触发的评论,我会建议使用Cookie。

不用说,自动提醒需要由cron作业触发。

总结:

  • 如果你想自动提醒:利用数据库+ cron作业
  • 如果你不想自动提醒:使用cookie
0

首先应该创建服务已评论的逻辑(例如,只允许在n天之后用户评论他的命令)...

后,您可以通过这种方式使用队列处理此操作:

提交订单后,您将作业添加到N天后的队列中。 它是作业U可以通过电子邮件的用户,对他说,他可以离开他的命令评论...

添加作业队列可以是一个事件或可以在命令模式的听众......

了解更多信息:

https://laravel.com/docs/5.4/providers

https://laravel.com/docs/5.4/queues

0

我建议一个不同的设计。你真的不知道,他们什么时候收到他们的订单,什么时候他们打开它,使用它,或享受它。也许它在第二天交付,他们立即使用它。也许它在7天后交付,并且一周没有触及。你真的需要接受这个频谱的两端是合法的。但我知道你不希望人们检查他们没有合法使用的订单。所以这是我的另一个建议。

允许用户在购买后随时提交评论。他们可能会在订购后5天,5小时甚至5分钟提交评论。当您的网站上的评论变为可见时,您限制的是。因此,您制定了一项政策,可以随时接受评论,但只能在包裹投递后72小时内看到。 (或者任意数量的小时;你甚至可以缩小数量,可信用户可以在24小时内看到他们的评论,但新用户需要72)。

这种方法简化了你必须编写的代码:是评论提交日期时间,并且基于所述提交日期时间限制评论的显示。

+0

我的应用程序就像数据库关系几乎相似的电子商务应用程序。没有任何实际的订单,但这是描述它的最好方法。 Theres没有等待时间,没有真正的产品。这是假设 – ProEvilz