Aunque en estos momentos todavía está solo disponible PHP 8.1 RC2, sin duda esta nueva versión de PHP va a dar mucho que hablar. Esto también significa que a partir de su lanzamiento, solamente tendremos como versiones soportadas PHP 7.4 (únicamente con soporte de seguridad), PHP 8.0 y PHP 8.1.
Como ya es sabido, Matt tomó en agosto de 2020 la decisión de que no se cumpliera lo establecido en el roadmap de que WordPress 5.6 dejase de dar soporte a PHP 5.6 y que diera soporte a PHP 8.0, pero ha pasado un año más y a partir de este WordPress 5.9 parece que se dará soporte a 8 versiones de PHP diferentes.
Así que WordPress 5.9 va a dar soporte a las siguientes versiones de PHP:
- PHP 5.6.20+
- PHP 7.0
- PHP 7.1
- PHP 7.2
- PHP 7.3
- PHP 7.4
- PHP 8.0
- PHP 8.1
Hay que tener en cuenta que, aunque WordPress ya es compatible con PHP 8.0 y lo será con PHP 8.1, la versión recomendada en estos momentos sigue siendo una versión que únicamente tiene soporte de seguridad: PHP 7.4.
¿Funciona mejor WordPress con PHP 8.1?
Una vez más, este estudio que planteo tiene poco de científico, está hecho simplemente por curiosidad, pero sí que he de decir que las cifras, a nivel comparativo, son correctas. Lo que se compara es siempre lo mismo y con la máxima similitud en configuración (en versiones de PHP antiguas hay algunas configuraciones que se han eliminado al no ser compatible).
La prueba, esta vez, simplemente es con un contenido de una entrada de Minion Ipsum, por lo que son simplemente 4 bloques de párrafo en Twenty TwentyOne.
Este tutorial ha sido creado en un VPS de Clouding.io. Puedes crear tu propio VPS desde 3€/mes.
Además, tienes la posibilidad de crear tu VPS con la imagen de WordPress en un clic.
COLABORACIÓN
Se ha utilizado un servidor con 4 CPU y 8 GB de RAM (y 10 GB de disco NVMe). Se han omitido cachés y no se ha configurado JIT. He usado una configuración amplia para que no haya cuellos de botella ni en el servidor web ni en la base de datos y sea capaz de comerse todo el tráfico.
El experimento está hecho en un VPS con Ubuntu 20, con las últimas versiones de cada versión de PHP disponibles, y con una configuración de PHP optimizada. También lo están nginx y MariaDB.
Todos los resultados se han obtenido con la herramienta «ab», y «wrk» con los siguientes comandos:
ab -n 1024 -c 4 https://example.com/
wrk -c128 -d10s -t1 --latency --timeout 5s https://example.com/
Antes de cada análisis se ha reiniciado el servidor para que estuviera completamente limpio y se han ejecutado exactamente los mismos comandos en el mismo orden con tal de que el test sea lo más fiable posible y en las mismas condiciones.
Tiempo en conseguir la prueba
Tiempo en conseguir 1024 peticiones, separado en 4 hilos.
Cuanto menor es el valor, mejor.
PHP | Tiempo (s) |
---|---|
PHP 5.6 | 15,131 |
PHP 7.0 | 7,517 |
PHP 7.1 | 7,517 |
PHP 7.2 | 7,190 |
PHP 7.3 | 6,816 |
PHP 7.4 | 6,688 |
PHP 8.0 | 6,713 |
PHP 8.1 | 6,441 |
Peticiones por segundo
Peticiones por segundo conseguidas en varias pruebas.
Cuanto mayor es el valor, mejor.
PHP | ab (req/s) | wrk (req/s) |
---|---|---|
PHP 5.6 | 67,68 | 56,87 |
PHP 7.0 | 136,23 | 138,32 |
PHP 7.1 | 136,22 | 137,63 |
PHP 7.2 | 142,42 | 144,51 |
PHP 7.3 | 150,24 | 150,10 |
PHP 7.4 | 153,12 | 156,59 |
PHP 8.0 | 152,54 | 156,41 |
PHP 8.1 | 158,98 | 167,30 |
Tiempo medio de las peticiones
Vendría a ser el TTFB (Time To First Byte).
Cuanto menor es el valor, mejor.
PHP | Tiempo (ms) |
---|---|
PHP 5.6 | 59,104 |
PHP 7.0 | 29,363 |
PHP 7.1 | 29,365 |
PHP 7.2 | 28,085 |
PHP 7.3 | 26,624 |
PHP 7.4 | 26,123 |
PHP 8.0 | 26,222 |
PHP 8.1 | 25,161 |
Petición más rápida
Tiempo de la petición (de las 1024 realizadas) que más rápido ha sido creada.
Cuanto menor es el valor, mejor.
PHP | Tiempo (ms) |
---|---|
PHP 5.6 | 51 |
PHP 7.0 | 26 |
PHP 7.1 | 26 |
PHP 7.2 | 24 |
PHP 7.3 | 23 |
PHP 7.4 | 23 |
PHP 8.0 | 23 |
PHP 8.1 | 22 |
Percentil Tiempo de respuesta (ms)
El porcentaje de las peticiones realizadas ha tardado menos de ese tiempo (en milisegundos).
Cuanto menor es el valor, mejor.
PHP | 90% (ms) | 95% (ms) | 99% (ms) |
---|---|---|---|
PHP 5.6 | 68 | 78 | 87 |
PHP 7.0 | 32 | 33 | 37 |
PHP 7.1 | 32 | 35 | 45 |
PHP 7.2 | 30 | 33 | 41 |
PHP 7.3 | 29 | 31 | 37 |
PHP 7.4 | 28 | 29 | 37 |
PHP 8.0 | 28 | 30 | 40 |
PHP 8.1 | 27 | 29 | 37 |
Distribución de latencia
Tiempo que ha llevado hacer las peticiones (tiempo máximo, 10 segundos) y peticiones totales hechas en esos 10 segundos.
Cuanto menor es el valor, mejor.
PHP | 50% (s) | 75% (s) | 90% (s) | 99% (s) | req/10s |
---|---|---|---|---|---|
PHP 5.6 | 4.11 | 4.25 | 4.34 | 4.46 | 571 |
PHP 7.0 | 1.79 | 1.81 | 1.83 | 1.86 | 1389 |
PHP 7.1 | 1.77 | 1.81 | 1.83 | 1.87 | 1383 |
PHP 7.2 | 1.69 | 1.71 | 1.73 | 1.76 | 1450 |
PHP 7.3 | 1.66 | 1.69 | 1.71 | 1.75 | 1506 |
PHP 7.4 | 1.56 | 1.60 | 1.63 | 1.67 | 1572 |
PHP 8.0 | 1.56 | 1.63 | 1.68 | 1.74 | 1569 |
PHP 8.1 | 1.49 | 1.51 | 1.53 | 1.56 | 1679 |
Conclusiones
Como decía al principio, no son datos científicos porque lo he probado en un entorno bastante simple, pero puede dar una pequeña idea de las mejoras que suponen cada una de las versiones.
- PHP 8.1 podría aportar una mejora de velocidad del 5-7% con respecto a PHP 8.0.
- PHP 8.1 va 3 veces más rápido que PHP 5.6
- Con respecto a PHP 5.6
- PHP 7.3 va 2,63 veces más rápido
- PHP 7.4 va 2,73 veces más rápido
- PHP 8.0 va 2,74 veces más rápido
- PHP 8.1 va 2,94 veces más rápido
Sobre este documento
Este documento está regulado por la licencia EUPL v1.2, publicado en WP SysAdmin y creado por Javier Casares. Por favor, si utilizas este contenido en tu sitio web, tu presentación o cualquier material que distribuyas, recuerda hacer una mención a este sitio o a su autor, y teniendo que poner el material que crees bajo licencia EUPL.
Hola Javier
gracias por tanto que das
queria preguntarte si ¿es seguro pasar a PHP 8.0 ?
tanto una web relativamente sencilla como un Woocommerce con muchos productos
saludos
Es seguro siempre y cuando todos tus plugins sean compatibles. En general PHP 8.0 debería ser compatible con todo lo que hay ya en WordPress…
Depende de tu hosting, si te permite cambiar fácilmente entre una versión y otra, es cuestión de probarlo, aunque lo ideal sería hacerlo con una versiónd e staging.
Javier, sería bien interesante que comparas PHP 8, con JIT activo, eso en teoría debería mejorar sustancialmente (más de 50%) la velocidad de respuesta.
En el caso de WordPress, JIT no aporta mucha cosa… ya hice la prueba el ño pasado y los cambios no son significativos (como digo, en WordPress).
Por lo que veo en la mayoría de pruebas la versión 7.4 es ligeramente mejor que la 8.0, a pesar de ser una versión superior.
Ahora mismo sí… WordPress no está adaptado todavía para aprovechar PHP 8.0 y mucho menos PHP 8.1, por eso aún se recomienda el uso en producción de PHP 7.4 y, por ejemplo, MariaDB 10.5 (aunque el soporte oficial es hasta MariaDB 10.3)