php中基于时间的代码执行

wlwcrazw  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(232)

我有一个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);
}

看起来,这是不可行的代码,因为
它将从每个客户端运行(定期设置超时和服务器命中,如果我也从服务器得到时间,它将更频繁地命中服务器)
用户可以更改运行上述代码的系统时间。
如果两个客户端同时检查问题是否未生成,则可以生成多个问题,因此生成问题。
那么,我如何控制上述限制,或者是否有其他合适的解决方案?

3htmauhk

3htmauhk1#

每隔几分钟就有100个客户机轮询服务器不是什么大事。每次他们在你的网站上打开一个实际上是在轮询服务器的页面。因此,将日期检查移到服务器端的php是当前设置的最佳解决方案。
如果您不喜欢让客户机时不时地对服务器进行轮询的想法(我可以理解),例如,您希望问题在16:00准时刷新,那么您可以考虑使用套接字。实际上,这意味着客户机正在侦听从服务器发送的任何更改,而无需轮询它,并在必要时进行更新。
socket.io易于使用,但在与php进行接口时并不是最简单的。我不知道您是否熟悉node.js,但下面是一些其他人关于sockets和php的小讨论:
与php和mysql脚本一起使用websockets的最佳方法是什么?

相关问题