如何每30秒自动加载一个xml文件?

时间:2012-12-15 16:44:58

标签: php jquery mysql xml-parsing

目前我有一个parser.php,它加载一个xml文件,并将xml文件中的新数据插入到mysql数据库中。我怎么会每30秒刷新一次这个php文件,所以我的mysql表总是有新数据?我想我可以使用短轮询来做到这一点,但我猜这不是最有效的选择。

提前致谢

2 个答案:

答案 0 :(得分:2)

这是一个非PHP解决方案,需要您具有shell(SSH)访问权限才能运行该脚本,但是您也可以通过PHP使用 exec() 运行它你想要。共享托管环境可能会对此方法构成挑战,但只要您可以在用户凭据下执行脚本,就可以毫无问题地运行它。

首先,您需要创建一个包含以下内容的bash脚本并保存(我将使用名称parser.sh来实现此示例)。然后,您可以根据需要调整sleep 30行中的超时。

#!/bin/sh  
while true
  do
    php parser.php
    sleep 30
  done

为了运行脚本,您需要为其提供执行权限。

chmod +x parser.sh

现在您可以将 nohup 命令与&符号(&)一起使用,以确保即使在发送终止信号之后脚本也会在后台运行,让我们说,关闭shell(SSH)。 &符号非常重要

nohup ./parser.sh &

现在,您可以使用topps aux | grep parser来确保脚本正在运行。正如我之前所说,你也可以使用PHP exec()来启动这个过程,但shell仍然是首选和最可靠的方法。

如果你想停止执行你的脚本的后台进程,那么你只需要杀死它。只需使用ps aux | grep parser找出解析器进程的PID(位于左侧第二列),并将其与 kill 命令一起使用。

kill 4183

答案 1 :(得分:0)

您需要使用cronjob,但crons作业每1分钟或更长时间运行一次。

另一种方法是制作一个“守护进程”。

非常基本的例子:

<?php
while(true) {
   // check if 30 seconds has passed.
   // then execute some function...
};
?>

然后你需要在你的终端执行:

$ php script.php &

link应该会有所帮助。

Greatings!