¿Cuál es el mejor marco PHP para una aplicación web similar a WhatsApp?

Como otros han mencionado, PHP (muy desafortunadamente) no tiene una gran cantidad de soporte nativo para aplicaciones en tiempo real, y con eso no hay marcos establecidos para construir aplicaciones en tiempo real [¿ tal vez algo para considerar crear?] . Existe Icicle.io pero nunca lo he usado yo mismo, y esa es una biblioteca, no un marco (y no estoy seguro de qué tan bien se integra en los marcos existentes).

También podría escribir una llamada ajax (o trabajo cron), que es esencialmente una llamada que vuelve a actualizar una aplicación después de un cierto período de tiempo. Entonces, cada 10 segundos más o menos, el código verificará si se han enviado mensajes nuevos. Pero eso parece torpe, y si estás conversando con alguien que está respondiendo de inmediato, eso sería molesto y probablemente tendría problemas de rendimiento en el futuro.

La falta de soporte en tiempo real es uno de los mayores errores de PHP con seguridad. Realmente espero que se corrija para el futuro. Actualmente estoy escribiendo una aplicación que necesita notificaciones en tiempo real y transmisiones en vivo, y en lugar de decidir usar PHP para ello, decidí integrar node.js con mi aplicación PHP existente. Curiosamente, fue mucho más fácil integrar los dos idiomas que escribir notificaciones en tiempo real en PHP.

Por mucho que me encante PHP, recomendaría buscar en otros idiomas con soporte nativo para funciones en tiempo real para un proyecto como este. Sin embargo, si está decidido a hacerlo en el marco PHP, sugeriría integrar la biblioteca icicle.io en un marco o escribir una llamada ajax.

Creo que PHP es un buen lenguaje para sus casos de uso, pero no creo que la mensajería en tiempo real esté en la lista.

Imagina esto:

La característica principal de la mensajería en tiempo real es recibir y enviar mensajes. ¿Cómo lo harás? Enviar un mensaje será tan fácil como enviar una POST HTTP. Pero ¿qué hay de recibir un mensaje? ¿Su aplicación cliente realizará sondeos persistentes y largos para recibir mensajes?

El problema con el funcionamiento de PHP y la conexión persistente es que para cada conexión, necesita un hilo PHP dedicado para manejar las solicitudes HTPP. Ahora, por lo general, para una pequeña aplicación PHP, las configuraciones estándar deben ejecutar 20, 100 o cualquier pequeño número de subprocesos PHP. Cada conexión persistente consumirá 1 hilo PHP y cada hilo PHP, por ejemplo, usa 1 MB de memoria. Entonces, para 1,000 clientes de chat, necesita 1,000 hilos PHP (al menos) * 1MB = 1 GB de memoria (1,000MB = 1GB por el bien de este ejemplo). Eso es si sus hilos de PHP * SOLO * consumen 1 MB, lo que creo que no será un caso. ¿Qué sucederá si sus hilos de PHP consumen 10MB cada uno, lo que creo que todavía es normal si usa otras bibliotecas como clientes de bases de datos, marcos, etc.?

Otro problema es la sobrecarga de HTTP. La mayoría de los mensajes de chat son pequeños, por lo que el 99% de sus solicitudes / mensajes el encabezado HTTP es varias veces más grande que el mensaje de chat en sí. Le sugiero que use websocket o conexiones tcp sin procesar.

Por último, pero no menos importante, intenta leer algo sobre la publicación / sub mensajes. Puede darle una idea de cómo trabajar en su aplicación de chat.

Como estás pensando en usar PHP, probablemente también tengas experiencia con Javascript. Le sugiero que busque usar Node.JS como su servidor de fondo o si desea un ecosistema más grande, pruebe Java con el marco Vert.X. Si te sientes aventurero, ¿por qué no pruebas Go 🙂?

Para una aplicación de mensajería en tiempo real, iría con un marco asincrónico como icicle.io. Laravel parece tener un buen soporte de colas y puedes hacerlo de manera bastante sencilla con Symfony2. Todavía prefiero un marco asincrónico que pueda manejar WebSockets para construir una aplicación de mensajería en tiempo real. También construiría la aplicación web con un buen marco de JavaScript reactivo como React (biblioteca de JavaScript).

Creo que no necesita ningún marco PHP para una aplicación web whatsapp-lile, al menos no utilizó ninguno. Si echas un vistazo a esto:

Rompiendo abierto https://web.whatsapp.com/

puedes ver cómo construyen la aplicación web. Es casi todo sobre javascript …

En realidad prefiero decir:

Ninguno, use Meteor con javascript.

Pero está pidiendo marcos PHP que hacer eso, no hay nadie bueno para eso, porque nadie lo necesitaba para un sitio PHP, excepto los casos contados y no compartirán (esa parte de) su código (estoy buscando en ti Facebook)

Probablemente tendrás que implementar algo desde cero.

Yo elegiría yii2.

Buen rendimiento, mejor arquitectura, gran comunidad y muchas características. Pruebas cubiertas.

Laravel es más popular entre los desarrolladores. Así que te sugiero que trabajes en Laravel para crear una aplicación similar a WhatsApp.

Dado que WhatsApp web no tiene características muy sofisticadas, puede usar cualquier microframework. Laravel está en tendencia ahora, así que puedes echarle un vistazo.