Comparando WordPress de PHP 5.6 a PHP 8.1

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.

PHPTiempo (s)
PHP 5.615,131
PHP 7.07,517
PHP 7.17,517
PHP 7.27,190
PHP 7.36,816
PHP 7.46,688
PHP 8.06,713
PHP 8.16,441
Los datos son en segundos (con 3 decimales)

Peticiones por segundo

Peticiones por segundo conseguidas en varias pruebas.

Cuanto mayor es el valor, mejor.

PHPab (req/s)wrk (req/s)
PHP 5.667,6856,87
PHP 7.0136,23138,32
PHP 7.1136,22137,63
PHP 7.2142,42144,51
PHP 7.3150,24150,10
PHP 7.4153,12156,59
PHP 8.0152,54156,41
PHP 8.1158,98167,30
Los datos son en peticiones por segundo (con 2 decimales)

Tiempo medio de las peticiones

Vendría a ser el TTFB (Time To First Byte).

Cuanto menor es el valor, mejor.

PHPTiempo (ms)
PHP 5.659,104
PHP 7.029,363
PHP 7.129,365
PHP 7.228,085
PHP 7.326,624
PHP 7.426,123
PHP 8.026,222
PHP 8.125,161
Los datos son en milisegundos (con 3 decimales)

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.

PHPTiempo (ms)
PHP 5.651
PHP 7.026
PHP 7.126
PHP 7.224
PHP 7.323
PHP 7.423
PHP 8.023
PHP 8.122
Los datos son en milisegundos (con 3 decimales)

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.

PHP90% (ms)95% (ms)99% (ms)
PHP 5.6687887
PHP 7.0323337
PHP 7.1323545
PHP 7.2303341
PHP 7.3293137
PHP 7.4282937
PHP 8.0283040
PHP 8.1272937
Los datos son en milisegundos

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.

PHP50% (s)75% (s)90% (s)99% (s)req/10s
PHP 5.64.114.254.344.46571
PHP 7.01.791.811.831.861389
PHP 7.11.771.811.831.871383
PHP 7.21.691.711.731.761450
PHP 7.31.661.691.711.751506
PHP 7.41.561.601.631.671572
PHP 8.01.561.631.681.741569
PHP 8.11.491.511.531.561679
Los datos son en segundos

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.

Deja un comentario