Java PHP中基于时间的代码执行

时间:2018-06-28 12:29:40

标签: javascript php mysql

我有一个使用PHP和Javascript的Web应用程序,我想在其中应用基于时间的问题生成。我预先设置了将在特定时间执行的代码,这将生成问题。

现在,我正在考虑如何应用此功能。以下是有关网络的一些信息

  1. Web正在wamp服务器上运行,并且有将近100个用户(每天)定期使用它。他们在上午9时至11时至下午2时至下午2时两次登录网站。
  2. 问题发生时间应该是下午4点。

现在,我可以使用SetTimeOut和Javascript Date对象来实现所需的功能:此处

    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. 它将在每个客户端上运行(设置超时和服务器命中率) 定期,并且如果我还从服务器那里获得时间,那么它将比在服务器上更常见)
  2. 用户可以更改系统时间以运行以上代码。
  3. 如果两个客户同时检查未生成问题,则可以生成多个问题

那么我如何控制上述限制?还是有其他合适的解决方案可用?

1 个答案:

答案 0 :(得分:0)

每隔几分钟让100个客户端轮询服务器不是什么大问题。每次他们在您的网站上打开一个实际上轮询服务器的页面时。因此,将日期检查移到服务器端的php上是当前设置的最佳解决方案。

如果您不喜欢让客户端出于美学原因不时地轮询服务器的想法(我可以理解),例如,您希望在16:00时刷新问题,您可以考虑使用套接字。实际上,这意味着客户端可以监听服务器发送的任何更改,而无需轮询它,并在必要时进行更新。

Socket.io易于使用,但在与php交互时却不是最简单的。我不知道您是否熟悉Node.js,但这是一些关于套接字和php的小讨论:

What is the best way to use websockets along with PHP and MySQL scripts?