2009-12-25 18 views
5

¿Existe una solución real para la combinación de COMET Y PHP? Básicamente, llegué a un punto en el que necesito actualizar la página de inicio de un usuario periódicamente cada vez que hay datos nuevos en la base de datos. Por lo que entiendo, necesito abrir una conexión persistente entre mi servidor y los navegadores de mis clientes para actualizar los contenidos de su página de inicio tan pronto como haya nueva información. disponible sin dedicar muchos recursos, pero no tuve suerte para encontrar algo claro sobre este tema. Leo muchos artículos que sugieren que PHP no es un buen lenguaje para implementar COMET. Mi aplicación web está completamente programada en PHP y no quiero aprender otro idioma, pero si me veo obligado a hacerlo, ¿me sugerirías un buen lenguaje para empezar? ¿Crees que puedo programar una interfaz solo para manejar este problema?solución para COMET y PHP

Gracias de antemano.

+0

Duplicado: http://stackoverflow.com/questions/603201/using-comet-with-php – jvenema

Respuesta

0

No es necesario que aprenda un nuevo idioma para implementar dicha función.

Por ejemplo, puede usar Quercus (implementación Java de PHP) e implementar una aplicación Comet del servidor utilizando el modelo de gestión de memoria de JVM.

+0

Muy interesante escuchar que hay un PHP en la implementación de JAVA . Como lo que he leído en los documentos, es realmente más rápido que el módulo PHP-APACHE tradicional, pero estoy realmente confundido. Por lo que he entendido, Resin servirá las páginas de PHP no apache, pero ¿cómo puedo implementar una aplicación de servidor Comet usando JVM como usted dijo? Debería hacer uso de algunas funciones de JAVA. Perdóname, soy un novato en esta tecnología y no tengo ninguna experiencia en JAVA. Gracias – codemaker

0

Usted debe tratar de Dmitry Koterov Realplexor, que es un servidor de cometas, que proporciona API de JavaScript y PHP.

Readme.txt en inglés se proporciona en el package.

+0

Lo siento, el enlace está muerto. – codemaker

+0

me funciona. intente descargar desde esta página: http://github.com/DmitryKoterov/dklab_realplexor/ –

2

Las veces que he oído a gente decir que PHP no era muy adecuado para COMET (como usted mismo ha dicho) fue debido a la forma en que los servidores web y el trabajo de PHP - en su mayoría, porque hay un proceso por página, lo cual significa que si desea 200 usuarios conectados a su servidor, necesitará 200 procesos (que pueden convertirse rápidamente en un problema para un par de cientos de usuarios más).

Tal vez una solución a ese problema sería utilizar nginx_http_push_module?

yo no lo he probado (¿todavía?), pero podría ser justo lo que necesitamos ...

+0

Interesante. ¿Hay algún ejemplo de cómo hacer uso de él? por ejemplo, ¿cómo insertar datos desde un script PHP a un broswer? – codemaker

+0

Todavía no he visto ningún ejemplo de PHP; desafortunadamente ;-(;; podría intentarlo un día u otro, pero no en el futuro inmediato ... Aún así, si te pruebas a ti mismo, y/o encuentras algo interesante, yo ' estoy interesado en lo que puedes encontrar ;-) –

0

primero tendría que entender lo que es una aplicación cometa similares. El concepto involucrados en la construcción de una aplicación cometa se explican en el wiki en Comet (programming)

Lo que hay que entender es que se puede utilizar cualquier lenguaje de programación para construir una aplicación cometa con tal de que sigue los conceptos explicados en el wiki

1. Ajax con larga encuesta

2.Streaming

Puede comprobar un código de ejemplo en Simple “Long Polling” example code

Ahora que se acerca a los problemas -

1.You uso ajax sondeo largo entonces el navegador (petición AJAX) mantendría el sondeo del servidor de datos. Esto puede consumir memoria en el servidor o ralentizar el navegador después de un tiempo.

Algunas sugerencias

JQuery PeriodicalUpdater (AJAX long polling/server polling)

Handling Long Polling

RobertFischer/JQuery-PeriodicalUpdater

Lo que hay que comprobar para poner en práctica este -

a) ¿Con qué frecuencia se puede esperar que los datos se actualizan el servidor.

b) Cuánto tiempo se ejecutaría la secuencia de comandos del lado del servidor para verificar, recuperar y procesar los datos antes de enviarlos al lado del cliente.

2.You puede aplicar en streaming usando la siguiente -

How to implement COMET with PHP

Lightstreamer Dojo

Dojo Charting + Lightstreamer Comet Demo

Demo

Ajax Push Engine or The APE Project

Lo que hay que comprobar esto -

a) ¿Su proveedor de hosting le permitirá instalar estos en los servidores de alojamiento

b) la memoria RAM y la utilización de ancho de banda (Usted necesitará un servidor dedicado con el paquete que le da mucha RAM y ancho de banda)

Depende de qué y cómo sean sus requisitos. Tendrás que analizar y acercarte.

Si lo que está implementando es una pequeña aplicación, puede optar por la encuesta Ajax Long dado que analizó y manejó los aspectos negativos de este enfoque.

Si tiene una aplicación grande, puede utilizar la aplicación de vapor.

1

Estaba trabajando en un proyecto de la escuela y me encontré con exactamente el mismo problema. Debido a que cada proceso de PHP tiene mucha sobrecarga de memoria, es imposible admitir muchas conexiones por caja. Fue en este momento que decidí cambiar a usar BOSH y XMPP. Esta es una "ola" bastante nueva de tecnología, pero ya hay bastantes bibliotecas para ayudarlo en su camino. Sugeriría usar Strophe y XMPPHP. Luego, sus clientes pueden conectarse a un servidor BOSH (estoy usando Openfire) y eso puede escalar a miles de conexiones activas por servidor.

0

Ajax con larga encuesta es una solución fácil, hay complementos en jquery y cualquier otro framework js importante para ayudarle a hacer esto.

+0

Comet es un largo sondeo Ajax, PHP no te permite jugar con el típico modelo de página/solicitud, por lo que es difícil obtener buenos resultados con Comet y PHP – Michael

0

Node.js parece una solución bastante dulce para cosas como esta. (Todavía un poco difícil para la producción, pero genial de todos modos). PHP es un entorno horrible para cosas como esta, tienes que cambiar la forma en que el servidor interactúa con las solicitudes porque ya no estás respondiendo de inmediato. Python tiene un puñado de servidores como Twisted que son geniales para esto porque le permiten ser el servidor. No importa en qué idioma lo escriba, debe modificar el modelo típico de solicitud/respuesta. (El servidor Grizzly Comet de Glassfish hace esto para Java como ejemplo)