如何使用Laravel让用户等待



我使用的是Laravel 5.3,我已经构建了一个应用程序,我们可以将其视为一个电子商务应用程序。我本质上想允许用户在应用程序中(而不是通过电子邮件)为他们的订单留下评论,但让他们在购买后等待X天。就像易趣一样。。。

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

任何想法都将不胜感激。

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

根据我对您的用例的理解,您需要一种持久存储方法来记住自购买物品以来已经过去了多少天。一般来说,有4种持久存储方法:

1.Cookie

  • 存储:客户端(但由于Laravel对所有cookie进行加密和签名,因此安全)
  • 特定:用户计算机和域唯一
  • 持久时间:可以永远持续,除非用户专门删除cookie
  • 常见用例:保存的首选项

2.会话

  • 存储:服务器端(取决于驱动程序)
  • 特定:特定于用户(但取决于驱动程序)
  • 持续时间:通常在几个小时后到期,但可以延长
  • 常见用例:从一个请求到另一个请求的持久层(如购物车、操作触发后的弹出通知)

3.缓存

  • 存储:服务器端
  • 特定:通常是特定于应用程序的(但也可以是特定于用户的)
  • 坚持时间:一般为一小时到几天
  • 常见用例:特定于应用程序的存储用例(例如,总点击次数、最受欢迎的页面、数据库查询缓存、视图缓存)

4.数据库

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

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

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

总结:

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

首先,您应该为has注释逻辑创建服务(例如,只允许用户在n天后对其订单进行注释)。。。

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

提交订单后,您将添加一个作业到N天后的队列中。工作u可以给用户发电子邮件,并对他说他可以为自己的订单留下评论。。。

将作业添加到队列可以是事件,也可以是订单模型上的侦听器。。。

更多信息:

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

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

我建议采用不同的设计。你真的不知道他们什么时候收到订单,什么时候打开、使用或喜欢。也许第二天就送到了,他们马上就用了。也许它是在7天后交付的,一个星期都没有动过。你真的需要接受这一光谱的两端都是合法的。但我明白,你不希望人们审查他们没有合法使用的订单。这是我的另一个建议。

允许用户在购买后的任何时间提交评论。他们可能会在订购后5天、5小时甚至5分钟提交评论。相反,当评论在您的网站上可见时,您的限制是。因此,你制定了一项政策,规定在任何时候都可以接受评论,但只有在包裹交付后72小时才能看到。(或者任何小时数;你甚至可以缩放数字。受信任的用户可以在24小时内看到他们的评论,但新用户需要72小时。)

这种方法简化了您必须编写的代码:您只需要跟踪评论提交日期时间,并根据所述提交日期时间限制评论的显示。

最新更新