首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉勒维尔·莱佛尔项目。排队是实现这一目标的最佳途径吗?

拉勒维尔·莱佛尔项目。排队是实现这一目标的最佳途径吗?
EN

Stack Overflow用户
提问于 2016-02-21 14:04:07
回答 1查看 343关注 0票数 1

我正在创建一个抽奖网站作为一个小的附带项目。它将处理多个抽奖,每个抽签都有一个结束时间。在每次抽奖结束时,只选出一个获奖者。

拉勒维尔·乔布斯( Laravel )是最好的选择吗?我是否只是创建一个永远重复的工作,以检查是否有抽奖结束,并需要一个赢家?

如果没有,最好的办法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-22 16:48:28

我不认为永远重复脚本是一个好主意。

我只是创造了一个永远重复的工作

这几乎不是个好主意。它在遗留代码库中有它的应用程序,但是websockets和事件是最适合这项工作的。此外,您还可以使用像Laravel这样的非常好的框架,所以要利用它。

Websockets

如果您希望在浏览器中实时通知用户。

如果您的所有用户在加载页面时都订阅了websocket通道,您可以轻松地向所有订阅客户端(即浏览器)发送一条消息到websocket服务器,以让他们知道谁是赢家。

然后,在客户端代码(Javascript)中,您可以解析该消息以确定谁是赢家,并提供一个弹出,让用户知道。

Events

如果您不介意延迟一点,那么大多数情况下都会使用事件来进行处理。

在每一项可能结束抽奖的行动结束时(即由计算机-function chooseName()随机选择一个名称)。启动通知所有参与抽奖活动的事件。https://laravel.com/docs/5.2/events

注:我已经把这两个问题列为单独的问题,但实际上,这两个问题可以一起使用。例如,在随机选择名称的事件中,确定抽奖是否结束,并通过websocket连接通知客户端。

为什么我不使用延迟乔布斯

原因的关键在于可维护性。

想象一下,某件事情会将你的抽奖时间延长一周。这种情况可能会发生,因为抽奖被欺骗或其他(不能真正想到该领域的所有用例)。

现在,您的工作有一个固定的延迟-这真的是一个很好的编程原则,必须改变两件事时,只有一个场景改变?不是的。有类似事件的地方-- onRaffleEnd --显式地查找事件的发生。拉勒维尔不在乎什么时候发生这种事。

使用延迟的乔布斯是可行的--只是在你的场景中它不是一个很好的编程用例,并且限制了你在长期内所能做的事情。它将迫使你做更多的考虑,当意外的情况出现,以及当你想改变事情。这也分散了与您的抽奖相关的逻辑。虽然解耦代码是一种很好的实践,但是将逻辑放在完全不同的位置使维护成为一场噩梦。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35537072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档