La creación de un detector de eventos en PHP, en espera de contenido XML

votos
18

Necesito crear un detector de eventos. Soy un novato así que sea amable :)

Básicamente estoy en pagina1.php (archivo php); Quiero dentro de un bucle para ir a ver page2.xml (archivo XML) para alguna información que debe ser recibido en algún momento. O bien comprobar que todo el tiempo, o esperar y cada 5 minutos o así para ver si alguna información ha sido recibida allí. Cualquiera de ellos trabajan para mí.

Si hay información que se haya recibido después de unos minutos, entonces quiero correr de nuevo el bucle (hasta que se recibe), de lo contrario, seguir adelante y hacer algo con mi nueva información recibida. Esta parte no tengo ningún problema con, justo el propio detector de eventos. No pude encontrar la función que debería usar en cualquier lugar. :( Sólo tengo que comprobar y recuperar el contenido del archivo XML de vez en cuando.

No estoy tan segura de lo que debe ir sobre esto si no hay sólo una función que hace esto, pero no pude encontrar mucho cuando buscaba detector de eventos php.

Cualquier ayuda se agradece: referencia al código de tutoriales / muestra / aunque sólo me dice qué palabras clave que debería estar buscando o lo que tengo que aprender primero con el fin de hacer esto.

¡Gracias!

Publicado el 21/12/2011 a las 23:17
por usuario
En otros idiomas...                            


3 respuestas

votos
1

Bueno, primero debe comprender la terminología que utiliza. PHP no es un lenguaje orientado a eventos, que es un lenguaje petición impulsada. Una solicitud entra en el servidor web, PHP lo analiza y se envía una respuesta al solicitante. En ningún momento no son eventos activados que se pueden procesar o manejar. Se puede implementar su propio "sistema de eventos" pero en última instancia esto es mucho más trabajo que lo que implica que su caso de uso.

Su mejor apuesta es probable utilizando AJAX y continuamente haciendo peticiones a su script PHP hasta que regrese los datos que busca. En última instancia, tendrá que aprender sobre el XMLHttpRequestobjeto JavaScript. Después de comprender cómo hacer peticiones asíncronas utilizando JavaScript se puede ver en el setInterval()método de cómo hacer un pedido en repetidas ocasiones.

Una vez que usted puede hacer en varias ocasiones peticiones asíncronas que debe ser un proceso relativamente simple de crear una página web donde se puede desencadenar las peticiones AJAX para ser enviados.


No hay necesidad de un bucle en el código PHP. El bucle se realiza con eficacia en el otro extremo. Aquí hay un flujo de trabajo textual que es posible que siga:

  1. Ir a un sitio diseñado para desencadenar sus llamadas AJAX y desencadenar ellos.
  2. Hacer su solicitud asíncrona a su script PHP.
  3. Dentro de su script PHP abrir el archivo XML y comprobar el contenido necesario.
  4. Devolver una respuesta en la forma de un objeto JSON. Una respuesta puede significar que los datos no se actualiza, la otra respuesta significa que los datos se actualizan.
  5. Analizar la respuesta, si los datos no se ha actualizado la repetición de la etapa (2). Si los datos se actualiza continúe con el paso (6).
  6. Mostrar un saludo de celebración que se ha actualizado sus datos o un aviso de que todavía estamos a la espera de los datos que se actualizan. Tal vez usted puede tener el número de intentos, así, a un lado.
Respondida el 21/12/2011 a las 23:57
fuente por usuario

votos
0

Hice algo como esto escribiendo un analizador de la bandeja de entrada en PHP. Eres mejor opción es:

Código page1.phpen el que sólo tiene que hacer 2 cosas: leer XML desde page2.xmly si hay algo "nuevo" sólo hay que ejecutar el código de datos en el análisis.

Configuración de un Cron trabajo (si eres menor de Linux) para ejecutar cada 5 minutos más o menos (comando Cron es algo así como: php /path/to/page1.php). De la misma manera, si se está utilizando Windows se puede configurar una tarea programada y ejecutar el mismo comando. Tenga en cuenta que la ruta completa a la instalación de PHP debe estar en PATHla variable de entorno.

Respondida el 22/12/2011 a las 00:20
fuente por usuario

votos
1

Hice lo siguiente:

guardarán automáticamente en la base de datos cada vez que algo nuevo entró.

Luego corrió un bucle php que cada pocos minutos evaluados para ver si hay algo nuevo en la base de datos que se ajusta a los parámetros de este nuevo evento (incluyendo happenned que en el plazo de los últimos minutos). Solía flush();y luego sleep(120);en el bucle para obtener el lazo para seguir funcionando cada pocos minutos, hasta que la nueva información entró en cuyo caso se hará break();o die();.

Respondida el 03/01/2012 a las 23:57
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more