每隔100ms运行一次php脚本

时间:2011-04-23 05:42:26

标签: php

是否可以在每100毫秒后运行一个PHP脚本?此脚本将检查数据库是否有更改,然后更改将反映到其他一些数据库中。我已经使用触发器做了。但是我想知道在没有使用Cron和Triggers的情况下是否还有其他方法可以做到这一点。我将为此目的使用Linux。 感谢

6 个答案:

答案 0 :(得分:1)

使用cron(最大频率为1分钟)是不可能的,这是一个非常糟糕的主意。你将每秒运行一个全新的PHP解释器十次,更不用说还要做数据库连接了。

或许更好的方法是运行一个程序,重新使用它的连接并每隔一秒左右检查一次。

听起来有点像你试图在两个数据库之间进行自己的数据库复制或同步。

答案 1 :(得分:1)

您可以编写一个守护进程来执行此操作,本质上是一个在内存中不断运行的脚本,然后运行您想要的任何代码。

然后守护进程会为你做数据库处理,你不必一遍又一遍地调用脚本。

答案 2 :(得分:1)

使用您喜欢的编程语言并设置永久循环以每100毫秒运行一次,然后将脚本放入inittab并使用'respawn'(man inittab以获取完整语法)。最后,init q重新加载init。

答案 3 :(得分:1)

最好是为此编写一个小守护进程。使用pcntl功能执行此操作。在你的情况下,你可能会逃避:

<?php

   while (1) {
        usleep(100000);

        if (pcntl_fork() == 0) {
             include("/lib/100ms-script.php");
             exit;
        }
        // else pcntl_wait(); eventually
   }

答案 4 :(得分:1)

每100毫秒运行一次,几乎意味着它一直运行,也可以创建一个持续循环和执行的守护进程

或使用触发器。基本上在每次数据库更改时,它都将复制到另一个表/ db。

http://codespatter.com/2008/05/06/how-to-use-triggers-to-track-changes-in-mysql/

答案 5 :(得分:-1)

我假设这是对要创建的某种类型的网页的引用。如果是这样,这听起来像是Ajax的工作,而不是PHP。您可能已经知道PHP处理是在服务器端完成的。处理完成后,页面将提供给客户端。

使用Ajax / JavaScript处理可以通过浏览器继续。您可以设置一个计时器,然后可以使用该计时器与服务器进行通信。根据响应的输出,可以更新页面以反映必要的更改。