在PHP中创建一个事件监听器,等待XML内容

时间:2011-12-22 01:17:19

标签: php events event-handling xml-parsing

我需要创建一个事件监听器。我是新手所以要善待:)

基本上我在page1.php(php文件);我想在循环中检查page2.xml(xml文件)以获取应该在某个时刻收到的一些信息。要么一直检查,要么等待,每隔5分钟左右,看看是否收到了一些信息。他们中的任何一个都适合我。

如果几分钟后没有收到任何信息,那么我想再次运行循环(直到收到它),否则,继续前进并对我新收到的信息做一些事情。这部分我没有问题,只是事件监听器本身。我找不到我应该在任何地方使用的功能。 :(我只需要经常检查和检索xml文件的内容。

如果不是只有一个函数可以做到这一点,我不太确定我应该怎么做,但当我搜索“事件监听器php”时我找不到多少。

任何帮助都将受到赞赏:参考教程/示例代码/甚至只是告诉我应该寻找哪些关键字或者我需要先学习什么才能做到这一点。

谢谢!

3 个答案:

答案 0 :(得分:1)

嗯,首先你应该了解你正在使用的术语。 PHP不是一种事件驱动的语言,它是一种请求驱动的语言。请求进入Web服务器,PHP解析它并将响应发送回请求者。在任何时候都没有触发可以处理或处理的事件。您可以实现自己的“事件系统”,但最终这比您的用例所需的工作要多得多。

您最好的选择可能是利用AJAX并不断向您的PHP脚本发出请求,直到您返回所需的数据为止。最终,您需要了解XMLHttpRequest JavaScript对象。在了解了如何使用JavaScript创建异步请求之后,您可以查看setInterval()方法,了解如何重复发出请求。

一旦你可以重复发出异步请求,它应该是一个相对简单的创建网页的过程,你可以在其中触发要发送的AJAX请求。


PHP代码中不需要循环。循环在另一端有效完成。这是您可能遵循的文本工作流程:

  1. 转到旨在触发AJAX调用并触发它们的网站。
  2. 向您的PHP脚本发出异步请求。
  3. 在PHP脚本中打开XML文件并检查必要的内容。
  4. 以JSON对象的形式返回响应。一个响应可能意味着数据未更新,另一个响应意味着数据已更新。
  5. 解析响应,如果数据未更新,则重复步骤(2)。如果数据已更新,请继续执行步骤(6)。
  6. 显示您的数据已更新的庆祝问候语或我们仍在等待更新数据的通知。也许你也可以尝试一下次数。

答案 1 :(得分:1)

我做了以下事情:

每当有新内容出现时,都会自动保存到数据库中。

然后运行一个php循环,每隔几分钟检查一次,看看数据库中是否有新的东西符合这个新事件的参数(包括它在过去几分钟的时间范围内发生)。我在循环中使用flush();然后使用sleep(120);来让循环每隔几分钟继续运行,直到新信息进入,在这种情况下{@ 1}}或break();

答案 2 :(得分:0)

我做了类似的事情,用PHP编写了一个收件箱解析器。你最好的选择是:

代码page1.php,您只需要做两件事:从page2.xml读取XML    如果有“新”的东西,只需执行数据解析    代码。

设置Cron作业(如果你在linux下)每5分钟左右执行一次(Cron命令类似于:php /path/to/page1.php)。同样,如果您正在运行Windows,则可以设置计划任务并执行相同的命令。请注意,PHP安装的完整路径应位于PATH环境变量中。