在PHP中创建事件侦听器,等待XML内容
我需要创建一个事件侦听器。我是一个新手,所以要友善:) 基本上我在page1.php(php文件);我想在一个循环中检查page2.xml(xml文件),以获取一些应该在某个时刻接收到的信息。要么一直检查,要么每5分钟左右等待一次,看看是否收到了一些信息。他们两个都为我工作 如果几分钟后没有收到任何信息,那么我想再次运行循环(直到收到为止),否则,继续前进,用我新收到的信息做一些事情。这部分我没有问题,只是事件侦听器本身。我在任何地方都找不到应该使用的函数:(我只需要每隔一段时间检查和检索xml文件的内容 如果不是只有一个函数可以做到这一点,我不太确定该怎么做,但我在搜索“事件侦听器php”时找不到太多 任何帮助都将不胜感激:参考教程/示例代码/甚至只是告诉我我应该寻找什么关键字,或者为了做到这一点,我需要先学习什么在PHP中创建事件侦听器,等待XML内容,php,events,event-handling,xml-parsing,Php,Events,Event Handling,Xml Parsing,我需要创建一个事件侦听器。我是一个新手,所以要友善:) 基本上我在page1.php(php文件);我想在一个循环中检查page2.xml(xml文件),以获取一些应该在某个时刻接收到的信息。要么一直检查,要么每5分钟左右等待一次,看看是否收到了一些信息。他们两个都为我工作 如果几分钟后没有收到任何信息,那么我想再次运行循环(直到收到为止),否则,继续前进,用我新收到的信息做一些事情。这部分我没有问题,只是事件侦听器本身。我在任何地方都找不到应该使用的函数:(我只需要每隔一段时间检查和检索xml
谢谢!首先,你应该了解你使用的术语。PHP不是一种事件驱动语言,它是一种请求驱动语言。请求进入web服务器,PHP解析它并将响应发送回请求者。在任何时候都不会触发事件,你可以处理或处理。你可以实现自己的“事件系统”,但归根结底,这比您的用例需要做的工作要多得多 您最好的选择可能是使用AJAX并不断向您的PHP脚本发出请求,直到您返回要查找的数据。最终,您需要了解JavaScript对象。了解如何使用JavaScript发出异步请求后,您可以查看如何重复发出请求的方法东部标准时间 一旦您可以重复发出异步请求,创建一个网页的过程就应该相对简单,您可以在其中触发要发送的AJAX请求
PHP代码中不需要循环。循环在另一端有效完成。以下是您可以遵循的文本工作流:
我用PHP编写了一个收件箱解析器,就是这样做的。您最好的选择是: Code
page1.php
在其中,您只需要做两件事:从page2.XML
读取XML和
如果有什么“新的”,只需执行数据解析
代码
设置一个作业(如果您在linux下),每5分钟左右执行一次(Cron命令类似于:php/path/to/page1.php
)。同样,如果您正在运行Windows,则可以设置计划任务并执行相同的命令。请注意,PHP安装的完整路径应位于环境变量中。我执行了以下操作:
每次出现新内容时自动保存到数据库
然后每隔几分钟运行一次php循环,检查数据库中是否有符合此新事件参数的新内容(包括在过去几分钟内发生的内容)。我使用
flush();
然后使用sleep(120);
在循环中,使循环每隔几分钟继续运行一次,直到新信息出现,在这种情况下,它将中断();
或死亡()
此文件是如何更新的?它是在您的服务器上,其他脚本正在更新它,还是您从其他服务器上提取它?您是在服务器上谈论一个长期运行的PHP脚本还是从网站/客户机进行轮询?此xml文件正在由外部服务器更新,但它位于我的服务器上-在我的服务器上也是如此e作为php文件。我不确定“长时间运行的php脚本”或“轮询”是什么,或者它们之间有什么区别。这基本上是一个外部API,用于更新我的xml文件。我的php脚本应该运行,直到收到此信息并对其进行处理,然后才能停止。此外,不必在网站上给出输出(虽然可以)。这可以在一个由表单触发的php页面中,现在它自己运行(如果可能的话)更好地描述您正试图实现的目标可能会很有用。可能有一种更简单的方法可以实现相同的结果,而不需要您描述的所有内容。好的,好主意。我正在使用twilio api。我在php页面中发送短信。现在如果有短信回复,它会到达xml页面。但是我想我不想在我原来的php循环中使用回复。谢谢!很酷,我知道如何使用ajax,我在其他地方使用了jquery的ajax功能,我只是想,因为这是php循环的一部分,所以这是不可能的?那么我应该从php循环的中间运行一个脚本?我可以在page1.php中将cronjob设置为作为php循环的一部分运行吗?我想这种情况不像收件箱中的作业会无限期地运行,我只需要用户触发这个循环,然后运行1-5次,直到xml中出现新内容,然后完全停止。使用cronjob是否可能?LucyWeatherford是的,我认为应该可以管理c