TLDR: elija Node.js
He escrito sistemas de producción en Java, Node, PHP y C #. Actualmente, estoy trabajando en una gran aplicación PHP. No pasa un día en que no quisiera poder volver a escribir la aplicación en otro idioma.
Aquí hay un par de pensamientos sobre PHP vs. Node.js. Recuerde, la escalabilidad no se trata simplemente de rendimiento. También es su capacidad de ofrecer funciones a sus clientes y generar valor comercial en su empresa.
- Si tengo antecedentes de PHP, ¿está bien comenzar a escribir mi propia aplicación de Android y aprender sobre la marcha, o debería pasar unas semanas en Core Java?
- ¿Cuál es un buen entorno alternativo a Eclipse para el desarrollo de Android?
- ¿Debo elegir una pasantía de verano en Kratikal en Noida para Junior Security Aanalyst o Eko en Gurgoan para el desarrollo de aplicaciones de Android?
- Cómo comenzar con el desarrollo de Android
- ¿Cómo construyo una aplicación básica de Android?
El ciclo de vida de una aplicación PHP es una sola solicitud.
Si bien esta naturaleza apátrida se promociona como una característica importante, francamente no siempre es beneficiosa. Hay momentos en que tiene sentido mantener el estado en un proceso (como un mecanismo de almacenamiento en caché por niveles). No importa lo que hagas, no puedes lograr esto en PHP. Debe usar algún tipo de caché externo (APC incluido) para mantener algo así como una variable simple. Desde una perspectiva de escalabilidad, literalmente debe inicializar toda su aplicación en cada solicitud.
Con Node, puede tener una aplicación con estado donde puede tener cosas como un proveedor de websocket existente en el mismo proceso que el resto de la aplicación web. Agregue un enlace a un agente de mensajes y obtendrá mensajes distribuidos en tiempo real sin tener que sondear una caché externa o una base de datos. Una vez más, todo en el mismo proceso.
Los entornos de desarrollo de PHP son un poco malos.
¿Quieres ejecutar una aplicación PHP? Es mejor usar Apache o Nginx si quieres algo que refleje la producción (sí, puedes usar el servidor de desarrollo incorporado … suspiro). ¿Quieres Apache pero no quieres ejecutarlo en tu máquina local? Necesitará una máquina virtual con Vagrant o algo así. O puede descargar contenedores hinchados como WAMP o XAMPP.
Ok, si bien estos no son factores decisivos, la mayoría de los idiomas modernos tienen entornos de servidor web integrados que no requieren toda esta ceremonia. Puede simplemente “nodo server.js” y comenzar. Usando una herramienta como Grunt, Gulp o Mimosa, tienes recarga en vivo, pruebas, linting, etc.
PHP a veces te dejará rascándote la cabeza.
La serialización / deserialización de JSON es un poco obtusa (haga todo lo posible para que funcione correctamente; por ejemplo, deserialice JSON a una instancia de clase específica). Los cierres no son serializables, lo que hace que sea imposible almacenar en caché parte de su configuración PHP-DI. API inconsistente (como firmas de funciones de la biblioteca de cadenas). Paradigma terrible e inconsistente para el manejo de errores (¡lanza una maldita excepción!).
Por otro lado, Node.js es muy limpio y consistente.
Asincronía; PHP realmente no lo tiene.
Hay un par de casos en los que PHP puede ser asíncrono (principalmente relacionado con la API de flujos de bajo nivel si no recuerdo mal), pero en general todo es bloqueante y secuencial. Node.js es inherentemente asíncrono.
En PHP, también estás realmente limitado en los tipos de mensajes que puedes usar. El marco React le brinda cierta capacidad, pero solo para un conjunto selecto de protocolos que se han implementado en la parte superior del marco. Sería difícil encontrar un protocolo de mensajería para el que alguien no haya escrito un marco en Node.
El nodo está floreciendo, PHP está en declive.
La comunidad Node.js simplemente ha explotado en los últimos años. La gente está escribiendo todo, desde aplicaciones web hasta clientes Git en el idioma. La mayoría de la emoción de PHP parece estar centrada en Facebook con HHVM. Sin embargo, tenga en cuenta que Facebook también está presionando a Hack como una alternativa a PHP (arreglando las verrugas).