每秒调用一个PHP函数

每秒调用一个PHP函数,php,Php,有没有一种方法可以定期执行函数 我有一个数据库表,我需要知道何时添加或删除条目。我尝试使用的逻辑是Ajax调用服务器,但服务器并没有立即响应,而是持续检查数据库是否更新了30秒,如果是,则只会响应,否则会在30秒后响应。通过这种方式,我试图通过每秒调用Ajax请求来最小化服务器上的负载 我该怎么做?使用而使用循环有意义吗?类似的事情可能是—— while (SomeCondition) { if (CheckIfDatabaseChanged()) { echo "Sys

有没有一种方法可以定期执行函数

我有一个数据库表,我需要知道何时添加或删除条目。我尝试使用的逻辑是Ajax调用服务器,但服务器并没有立即响应,而是持续检查数据库是否更新了30秒,如果是,则只会响应,否则会在30秒后响应。通过这种方式,我试图通过每秒调用Ajax请求来最小化服务器上的负载

我该怎么做?使用
而使用
循环有意义吗?类似的事情可能是——

while (SomeCondition)
{
   if (CheckIfDatabaseChanged())
   {
      echo "System Updated";
      break;
   }
}
如果这是一个无意义的解决方案,那么如何确保循环仅运行30秒并中断。或者有更好的解决方案吗?

使用以下方法:

set_timeout_limit(0)

您考虑的是一种称为长轮询的方法,它在PHP上的伸缩性不好,尤其是在使用阻塞IO时

有关更多信息,请参阅

但是你的代码可能是这样的

set_timeout_limit(31);
$i=0;
while ($i<30) {
    // poll database for changes which is a bad idea.
    i = i + 1;
    sleep(1); // sleep 1 second
}
设置超时限制(31);
$i=0;

虽然($iYou可以指定ajax请求的时间……如果您使用ajax每秒调用一次,那么您的服务器将进入旋转状态,因为ajax调用将永远不会返回……并且您可能会在等待的第二秒将10000个旋转循环添加到1中,为什么不使用ajax调用“CheckIfDatabasechanged”呢使用ajax和return,如果它已经做了一些事情的话..建议阅读:,。你的问题太微不足道了,除了为你编写代码之外,没有更好的方法可以帮助你。@lanzz我不希望有人为我编写整个代码。但至少我能知道在这种情况下使用
循环是否是个好主意吗?有吗这样的循环是可以的。除此之外,请参阅我提供的文档链接,您应该能够将一些内容放在一起。这与问题的要求正好相反(如何将执行时间限制为30秒)