2012-03-24 21 views
7

Siempre he trabajado con Apache, MySQL y PHP. Me gustaría extenderme eventualmente a Python/Django o Ruby/Ruby on Rails, pero eso es otra discusión. Dos cosas maravillosas de Apache, MySQL y PHP son las tres que son omnipresentes y es muy fácil lanzar un sitio web. Simplemente configure un host virtual Apache, importe la base de datos en MySQL y copie los archivos PHP en el servidor. Eso es. Esto es todo lo que he hecho y todo lo que he conocido. Por favor tenga esto en cuenta.¿Cómo puede un LAMP Guy implementar fácilmente WebSockets?

Actualmente, cada vez es más importante que los sitios web puedan entregar datos en tiempo real a los usuarios. Los usuarios también esperan esto debido a la naturaleza en vivo de Facebook y Gmail. Este efecto se puede simular con el sondeo Ajax, pero tiene muchos gastos generales, como se explica en here. Me gustaría usar WebSockets. Ahora recuerda que siempre he sido un tipo LAMP. Solo he lanzado sitios web usando el método que describí anteriormente. Entonces, si tengo, digamos, un sitio de CakePHP, ¿cómo puedo "agregar" la característica de WebSockets? ¿Tengo que instalar algún otro servidor o algo así o puedo hacer que funcione sin problemas con Apache? ¿Se requiere Apache 2.4? Por favor explícame el proceso teniendo en cuenta que solo sé sobre LAMP. ¡Gracias!

Respuesta

4

Una cosa clave a tener en cuenta, es que un servidor websockets en tiempo real necesita ser "de larga duración", de modo que pueda enviar cosas a los clientes. En la configuración clásica de LAMP, Apache genera un intérprete de PHP en cada solicitud. Entre las solicitudes, el intérprete de PHP no se está ejecutando, y el único estado de protocolo mantenido entre las solicitudes son las sesiones.

Una propiedad agradable de la forma LAMP, es que la gestión de la memoria es fácil. Simplemente asigna implícitamente la memoria que necesita, y se recupera automáticamente cuando se realiza la solicitud, y el proceso de PHP finaliza. Tan pronto como desee que el servidor siga funcionando, debe considerar la administración de la memoria. En algunos lenguajes, como C++, puede gestionar la asignación y la desasignación explícitamente. En otros idiomas, como Java o Javascript, tiene recolección de basura. En PHP tiras todo, y comienzas con una nueva hoja en cada pedido.

Creo que tendrá dificultades para crear servidores de larga ejecución con algo como Cake o cualquier otro framework PHP clásico. Esos marcos funcionan básicamente tomando una solicitud HTTP y convirtiéndola en una respuesta HTTP.

Mi consejo es que debe buscar algo como Node.JS y SocketIO. Si conoce Javascript o no le importa aprender, estas tecnologías le permiten implementar fácilmente servidores y clientes en tiempo real. Si es necesario, puede ejecutar un proxy inverso como nginx, para que su pila LAMP existente reciba algunas solicitudes, y uno o más servidores NodeJS obtendrían algunas.

Esta respuesta salió un poco esponjoso, pero espero que ayude un poco .. :-)

+0

También puedes ver https://github.com/davidcoallier/node-php y horquillas relacionados. También hay muchas implementaciones http en el nodo, pero esa es la belleza del nodo; no * tiene que ser * http. Probablemente podría mirar otros protocolos en tiempo real como rtmp si pudiera garantizar un consumidor para el extremo del cliente (como flash o flash como un proxy del lado del cliente para el script) – frumbert

+0

p.s. antes de saltar y decidir node.js es la solución, echar un vistazo y leer acerca de ambos lados de la solución, p. : http://teddziuba.com/2011/10/node-js-is-cancer.html – frumbert

Cuestiones relacionadas