2012-01-21 18 views
5

Solía ​​tener una pequeña aplicación de chat (que casi funcionaba), que usa PHP, jQuery y MySQL. El volumen de usuarios es muy pequeño (solo mis amigos lo usan). Utilicé un método de votación largo para esto.HTML5 - WebSocket en alojamiento compartido

Y ahora, estoy pensando en usar HTML5 Websockets para esto, porque es mucho más eficiente. Y también la mayoría de mis amigos usan Google Chrome (que ya es compatible con HTML5). He pasado por algunos tutoriales que hablan sobre websockets HTML5. Y he descargado el phpWebSocket de github. He revisado el código. Pero el archivo Léame dice que la página PHP que escucha las conexiones entrantes debe ejecutarse usando "PHP -q" desde la línea de comandos. Entonces, he buscado lo que haría esta bandera "q". Y descubrí que ejecuta la página en modo silencioso. Entonces, cuando ejecuto esto en modo silencioso, ¿qué ocurre? Corría interminablemente? ¿Este proceso en ejecución afectará los recursos del sistema?

Esta página PHP debe ejecutarse todo el tiempo. Entonces solo las conexiones podrían ser aceptadas. ¿No es así?

Estoy teniendo un paquete de alojamiento compartido con HostGator. Y también permiten trabajos cron. Y mi aplicación de chat actual (que usa un método de encuesta largo) inserta todos los mensajes en la base de datos. Cuando el usuario sondea, buscará todos los mensajes nuevos de la base de datos y luego los generará (si corresponde).

Por lo tanto, estoy un poco atrapado aquí. :(

Respuesta

5

Debe ejecutarse desde la línea de comandos porque, como sospechabas, está destinado a ejecutarse sin fin. Se une a un socket en el servidor y escucha las conexiones entrantes. No se puede ejecutar de manera confiable desde el navegador .

La opción "q" dice que no a la salida de cualquier encabezado navegador, como X-Powered-By: PHP o Content-Type: text/html

se consumirá más memoria que requiere PHP, siempre y cuando su funcionamiento. su consumo de memoria en el arranque sin los clientes variarán de una configuración a otra: mientras más clientes estén conectados, más descriptores de CPU, memoria y zócalo usarán. Utiliza seleccionar para que sea eficiente el manejo del zócalo.

Además, como está en alojamiento compartido, probablemente no podrá usarlo porque es probable que su usuario no tenga la capacidad de conectarse a un puerto y escuchar las conexiones.

Como puede ver en la demostración, la URL para conectar WebSocket es ws://localhost:12345/websocket/server.php. A menos que tenga un servidor web capaz de usar WebSockets, tendrá que ejecutar algo como phpWebSocket que actúa como servidor y escucha en un puerto que no sea 80.

Espero que ayude.

+0

Gracias por proporcionar una información clara :) –

+0

Una pregunta más: ¿cómo utilizamos SESIONES Junto con esto WebSockets? ¿O no es posible en este caso? Quiero decir, quiero almacenar datos particulares sobre el usuario. O diga alguna firma de verificación. ¿Es posible usar SESIONES para esto? O cree miembros de datos por separado en la clase ** Usuario **: https://github.com/esromneb/phpwebsocket/blob/master/websocket.class.php? –

+0

Hasta donde yo sé, no podría usar sesiones con websockets en este escenario.Como el navegador solo se conecta a un socket en el servidor, no hay cookies ni funcionalidad de sesión. Es posible que pueda enviar algún tipo de secuencia de inicio de sesión una vez que se conecte el websocket (tal vez el ID de sesión de la cookie de sesión) y luego podría obtener cierta información sobre el usuario. Hasta que los websockets estén más integrados en Apache/PHP, creo que tendrás que encontrar tu propia solución. Ver http://stackoverflow.com/questions/5353362/share-session-id-from-cli-to-browser – drew010

-3

puede ser usted puede utilizar tarea programada para iniciar la línea de comandos,

Cuestiones relacionadas