Laravel将时差存储到服务器中

时间:2018-11-10 18:12:57

标签: laravel vue.js

好,现在我要构建一个VueJS + Laravel Web应用程序。我对应用程序的主要功能是,当到达特定时间(开始时间)时,用户将能够单击按钮,并将用户按下按钮的时间与开始时间之间的时间差存储到数据库中。注意:大约有25个用户同时提交,垃圾记录按钮。每个用户只能记录一次。时间差最短的那支将赢得比赛。

目前,我想到了两种方法,

(i)使用javascript Date.now()获取当前时间,并减去开始时间,然后将timeDiff从前端发送到后端。速度很快,但Date.now()取决于客户端系统时间,如果用户更改其系统时间,则它们可以更早或更晚绘制,因为只要时间与开始时间匹配就没有关系。

(ii)一切都在后端处理。每次用户按下记录按钮,都会在服务器上生成一个时间戳。它没有问题(i),但是由于Laravel的性能,服务器似乎正在暂停请求,因此时间戳根本不准确。

有什么建议或建议吗?我对这一切仍然陌生,这些是我现在可以想到的2种方法。

if(auth()->user()->recorded !== 1){ //check if recorded

        //create timestamp in epoch
        $pressTime = microtime(true)*1000; 
        $offTimeStart = $user->startTime;
        $offTimeEnd = $user->endTime;
        $pressedTime = $user->pressTime;//initially 999999999

       //prevent user spamming record btn
       if($pressTime > $pressedTime){ return something;}

        //check if still within the range
        if($pressTime >= $offTimeStart && $pressTime < $offTimeEnd){
            if($user != null){
                $user->update([
                    'pressTime' => $pressTime,
                    'recorded' => 1 
                ]);}

0 个答案:

没有答案