javascript - Javascript PHP 中基于时间的代码执行

标签 javascript php mysql

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

现在我在想如何应用它。以下是一些有关网络的信息

  1. Web 在 wamp 服务器上运行,有近 100 个用户定期(每天)使用它。他们在上午 9 点至 11 点和下午 2 点至 6 点之间两次登录该网站。
  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. 可以生成多个问题,如果两个客户端同时检查问题未生成,则生成问题。

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

最佳答案

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

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

Socket.io 很容易使用,但在与 php 交互方面并不是最简单的。我不知道您是否熟悉 Node.js,但这里有一些其他人关于套接字和 php 的小讨论:

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

关于javascript - Javascript PHP 中基于时间的代码执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51082951/

相关文章:

javascript - 每次我添加 ng-controller 时,我的应用程序都会中断

Javascript 正则表达式仅匹配整个 url 作为输入

php 常量数组

php - 无法解决此 SQL 错误

php - Laravel Fluent 查询根据行是否存在更新或插入

mysql - 如何从 mysql 中的子查询返回零而不是 null

php - 按 MYSQL 中的特定列排序,带有额外条件

带有对象的 JavaScript 下拉列表

javascript - 页面刷新时更改图像有时会继续加载相同的图像

MYSQL 向后兼容 5.1.1?