首页 > 解决方案 > 在不同的浏览器中同时显示相同的内容

问题描述

我正在开发一个数字游戏,用户将在其中购买数字,并在 2 天后抽取中奖者。

我使用 PHP 作为后端,使用 jQuery 作为前端。

我的问题是当在不同浏览器上绘制的用户看不到相同的数字时,这些绘制数字是由 PHP 生成的。

我在想也许我可以用 PHP 和 Javascript 构建这些游戏,但看起来并不容易。各位大神能推荐一些替代品吗?如何改进此代码以在不同的浏览器上显示相同的数字?

我的想法是不可能为每个请求生成一个随机数。也许我可以将号码保存在数据库中,然后在 PHP 中获取这个号码,这样每个请求的号码都是唯一的。

实际的问题是在不同的浏览器中为每个用户创建相同的内容。任何帮助将非常感激。

Javascript:

var myTimer = setInterval(checkDrawDate, 1000);

function checkDrawDate() {
      var today = new Date();
      var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
      var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
      var dateTime = date+' '+time;
      var x = new Date(dateTime);
      var y = new Date("{{$drawDate}}"); //this is laravel variable which contain drawdate e.g. 2017-07-05

      if(x >= y){
          drawNumber();
    }
}

function drawNumber(){
      $.get("{{ route('ajaxcomparepowerball') }}",{'gameId': gameid}, function(res){
       $('#mybets').html(res.html); 
     });
}

PHP:

public function ajaxDrawNumber(Request $req){
     return rand(0,49);
}

标签: javascriptphpajax

解决方案


需要一个Cron Job来实现这个功能。$drawDate当您在特定时间(在您的情况下)绘制一个数字时。因此 cron 作业将每天执行一次,检查$drawDate每个游戏是今天还是过去。如果条件为真,则$drawDate <= now调用函数生成随机抽奖号码rand(0,49)并将其保存到gameid匹配游戏(有$drawDate <= now)对应的数据库中。

通过这样做,将减少很多 Javascript 工作。在 JS 中,然后需要使用 ajax 请求gameid从数据库中获取具有特定游戏抽奖号码的记录。如果没有找到记录,则表示尚未抽取随机数。

我认为您正在使用 Laravel,因此要在 laravel 中安排任务,请访问此处


推荐阅读