Tanto PHP como Node.js se ejecutan en el lado del servidor, y ambos son opciones viables para crear sitios web. Pero hay diferencias centrales entre ellos.
En primer lugar, uno no es mejor que el otro. Vamos a deshacernos de ese argumento ahora. Se adaptan a diferentes casos de uso, y a menudo tiene sentido usar ambos juntos en un solo sitio.
Ahora, a las diferencias.
- ¿Qué sitio de alojamiento es mejor para alojar aplicaciones basadas en marcos como Laravel, Ruby on Rails y Node.js?
- Cómo agregar paginación a mi sitio web usando PHP
- Cuando desarrolla un modelo para el aprendizaje automático, ¿este modelo permanece en el lado del cliente o del servidor? ¿Cuál es la mejor manera de crear un modelo? ¿Dónde debería quedarse?
- ¿Qué tamaño de imagen debo usar?
- ¿Cuáles son las principales ventajas de JavaScript?
1. Madurez
PHP ha existido por años. Esto significa que hay muchos proyectos escritos en PHP y muchos desarrolladores de PHP. Es fácil obtener ayuda para un problema complicado: probablemente ya se haya resuelto. Node.js es relativamente nuevo en el juego, por lo que muchas veces estarás abriendo nuevos caminos con él. Sin embargo, no es algo malo, Node.js ha aprendido de los errores de otros lenguajes (incluido PHP), y tuvo poca leyenda.
2. Cómo corren
Node.js normalmente se ejecuta como su propio servidor y es bastante autónomo. Con PHP, lo ejecutarías con un servidor web como Apache o Nginx o uno de los muchos otros.
Si ejecuta una instalación tradicional de Apache, descubrirá que cada conexión tiene un pequeño servidor Apache que se inicia para ocuparse de esa conexión. Esto es genial porque lo que sea que esté haciendo un usuario no afecta a ningún otro usuario. No es tan bueno cuando su sitio comienza a verse afectado, y su servidor está funcionando porque se está quedando sin servidores preiniciados y todo muere cuando se queda sin memoria. Entonces, para escalar PHP tradicional, terminas con muchos servidores que se ejecutan a través de un equilibrador de carga, y luego luchas con el mantenimiento de la sesión y otras cosas.
Por supuesto, PHP sí escala: hay muchos sitios web masivos que usan PHP. Solo toma un poco de trabajo.
Node.js ejecuta una instancia del servidor y acepta todas las conexiones a esta instancia. Esto significa que es más eficiente en la memoria y rápido para responder a muchas conexiones. Pero también significa que todo lo que ralentiza Node.js, lo ralentiza para * todos *.
Digamos que su aplicación envía un “¡Gracias por registrarse!” correo. En PHP, simplemente lo activaría como parte de la aplicación, y el usuario podría sentarse durante unos segundos mientras su aplicación PHP habla con los servidores de correo, y el correo se envía. No es genial, pero es poco probable que pases días codificando una forma asincrónica de enviar un correo de agradecimiento.
Sin embargo, en Node.js, ese correo de agradecimiento impedirá que todos usen su aplicación durante unos segundos. Si hay mucha gente registrándose, esto se convierte en un desastre total.
Para lidiar con esto, Node.js sigue un estilo de codificación muy diferente.
3. Estilo de codificación
Entonces, obviamente, Node.js es Javascript, y PHP es, er, PHP. A pesar de toda la propaganda acerca de que uno es superior al otro, en realidad son bastante similares en sintaxis. Pero debe cambiar la forma de pensar de manera bastante sustancial entre los dos.
PHP es muy lineal. Intentar realizar múltiples tareas en PHP es una tarea difícil. PHP no es bueno porque no tiene que serlo. Todo su sistema es multitarea con PHP, iniciando y apagando múltiples servidores Apache en milisegundos para entregar una sola página web. Apache hace la multitarea por ti. Después de haber hecho su trabajo, esos servidores Apache mueren y van al cielo del servidor web, donde no hay XML.
Node.js es totalmente asíncrono. Casi todo es multitarea, que tiene sus propios desafíos. Por lo general, desencadena un proceso, como enviar un correo, y cuando lo hace, a su vez, se activa un evento para indicarle a su aplicación que está listo. Mientras tanto, su aplicación continúa trabajando en las solicitudes de todos los demás. Esto es difícil de depurar y, a veces, difícil de diseñar. Pero principalmente es diferente de PHP.
Entonces, ¿cuándo deberías usar uno u otro?
¡Cuando quieras! Su elección de tecnología probablemente dependerá de lo que su desarrollador principal se sienta más cómodo, lo que su proveedor de servicios esté dispuesto a ejecutar u otras consideraciones operativas mundanas. Si tienes suerte y realmente tienes una opción, Node.js probablemente tendrá un poco de ventaja donde tienes muchas conexiones pequeñas. Si está utilizando una gran cantidad de Ajax en sus páginas, y está haciendo muchas llamadas asíncronas por página, o utilizando sockets web o conexiones largas similares, Node.js funcionará mejor.
Si tiene que entregar una página compleja, grande y estática, o donde tiene que procesar muchos datos, probablemente esté mejor con PHP.
O sea totalmente genial y use ambos a la vez. Serás como el hijo del amor entre un ciclista y un hipster, y definitivamente lucirás una barba increíble.