我有一个php和javascript的web应用程序,我想在其中应用基于时间的问题生成。我有预设的代码,将在特定的时间执行,这将产生问题。
现在我在想我该如何应用这个。这里有一些关于网络的信息
web在wamp服务器上运行,几乎有100个用户定期(每天)使用它。他们在上午9点至11点和下午2点至6点两次登录网站。
提问时间应该是下午4点。
现在,我可以使用settimeout和javascript date对象来实现所需的功能:here
function checkVotingQuestionTime()
{
var currentTime = new Date();
if(currentTime.getHours() >= 16 && currentTime.getHours() < 23)//check the time from user OS
{
checkVoteQuestionGenerated();
}
}
function checkVoteQuestionGenerated(){
//query to php check question exists
//if no
//then generate question
}
并在主页的文档就绪事件中注册(登录后)。此代码将对所有用户开放。
$jq(document).ready(function() {
setInterval(checkVotingQuestionTime, 60000);
}
看起来,这是不可行的代码,因为
它将从每个客户端运行(定期设置超时和服务器命中,如果我也从服务器得到时间,它将更频繁地命中服务器)
用户可以更改运行上述代码的系统时间。
如果两个客户端同时检查问题是否未生成,则可以生成多个问题,因此生成问题。
那么,我如何控制上述限制,或者是否有其他合适的解决方案?
1条答案
按热度按时间3htmauhk1#
每隔几分钟就有100个客户机轮询服务器不是什么大事。每次他们在你的网站上打开一个实际上是在轮询服务器的页面。因此,将日期检查移到服务器端的php是当前设置的最佳解决方案。
如果您不喜欢让客户机时不时地对服务器进行轮询的想法(我可以理解),例如,您希望问题在16:00准时刷新,那么您可以考虑使用套接字。实际上,这意味着客户机正在侦听从服务器发送的任何更改,而无需轮询它,并在必要时进行更新。
socket.io易于使用,但在与php进行接口时并不是最简单的。我不知道您是否熟悉node.js,但下面是一些其他人关于sockets和php的小讨论:
与php和mysql脚本一起使用websockets的最佳方法是什么?