javascript - 在不同的浏览器中同时显示相同的内容
问题描述
我正在开发一个数字游戏,用户将在其中购买数字,并在 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);
}
解决方案
需要一个Cron Job来实现这个功能。$drawDate
当您在特定时间(在您的情况下)绘制一个数字时。因此 cron 作业将每天执行一次,检查$drawDate
每个游戏是今天还是过去。如果条件为真,则$drawDate <= now
调用函数生成随机抽奖号码rand(0,49)
并将其保存到gameid
匹配游戏(有$drawDate <= now
)对应的数据库中。
通过这样做,将减少很多 Javascript 工作。在 JS 中,然后需要使用 ajax 请求gameid
从数据库中获取具有特定游戏抽奖号码的记录。如果没有找到记录,则表示尚未抽取随机数。
我认为您正在使用 Laravel,因此要在 laravel 中安排任务,请访问此处。
推荐阅读
- java - 带有 NoSuchMethodError 的 Mysql 连接器/j 驱动程序的 Kotlin Class.forName 失败
- angular - 如何动态更改剑道网格行中的货币
- android - SOLID - 接口隔离原则
- python - 如何在熊猫中创建数据框?
- html - CSS:将 iFrame 定位到浏览器的右下角,可能吗?
- scala - Spark 2.4 CSV Load Issue with option "nullvalue"
- python - 在平局的情况下随机化 numpy.argsort 输出
- node.js - 使用 node.js http-errors 包有什么好处?
- python - Pandas 匹配列表中的元素
- csv - 将大量链接数据转储(RDF/XML、JSON-LD、TTL)转换为 TSV/CSV