2010-08-01 19 views
6

Durante un tiempo he estado jugando con la idea de sondeo largo para mi sistema de notificación, pero nunca he sido capaz de pensar en una manera de hacerlo más eficiente para mi backend.AJAX sondeo largo, aumentando la eficiencia

mayoría de las implementaciones que se han visto mantenga la conexión abierta, y el php consulta al servidor de base de datos cada pocos segundos para ver si los nuevos datos se ha ADED. Esto me parece que no es mejor que tener el javascript sondear repetitivamente el servidor.

En cualquier caso tengo mis servidores de bases de ser golpeado decenas de miles de veces, lo cual es comprensible, no es particularmente deseable.

¿Hay sistemas que podría el/dormir larga secuencia de comandos de votación ejecución de 'alerta' a los nuevos datos?

Respuesta

2

sistema individual

Si su aplicación es el único sistema que cambia la base de datos, a continuación, puede desencadenar sus oyentes sólo cuando la aplicación realiza cambios (lo ideal es sólo para los cambios en las entidades que son interesantes para cada oyente)

múltiples sistemas

En el caso de múltiples sistemas de Acceso/cambiar la base de datos, puede

  • trabajo con la base de datos desencadena

o si no desea para hacer eso (por lo general evito), puede

  • asegurarse de que todos los otros sistemas de acceso a la base de datos siempre se notifique a su aplicación (a través de algún mecanismo de mensajería)

o si eso no es posible

  • al menos puede optimizar por tener sólo un bucle que se consulta la base de datos con frecuencia e informa a todos los oyentes al mismo tiempo (para que no tenga un bucle para cada oyente).
+0

Me encantaría que un sistema como el de notificación de bases para trabajar (sondeo ajax larga en una aplicación web). Todavía estoy un poco confuso sobre cómo podría funcionar esto. El bucle de corriente, el servidor actualmente busca nuevas entradas en la base de datos, luego verifica y vacía si hay nuevos datos. No estoy seguro de cómo el evento de una base de datos alcanzaría el proceso de inactividad, a menos que fuera volver a sondear el servidor. Tal vez la forma en que lo hago ** ¿es ** la más eficiente? –

+0

@Charles: Sí, ¡esto podría ser un pequeño problema en PHP! Creo que este hilo contiene algunas respuestas: http://stackoverflow.com/questions/603201/using-comet-with-php –

Cuestiones relacionadas