Siempre andamos hablando con los compañeros de trabajo que si es mejor que la web vaya rápido. Que si no hay que instalar muchos plugins en WordPress. Que no hay que meter demasiadas florituras en la web. Que lo más importante es el contenido. Y un largo etcétera..
Llegados a este punto, llegó el momento de actualizarnos en PHP. Tenía en el servidor PHP5 y ya conocía las bondades de PHP7. Pero también sé de los problemas que hay en los CMSs para ser compatibles con PHP7. Así que prueba tras prueba, he hecho una limpieza total de esta web y aquí traigo los resultados.
Y aprovechando tantos cambios, también un cambio de diseño 🙂
Pasos para actualizar WordPress a PHP7
- WordPress ya es compatible, actualízalo si no lo has hecho ya, es inseguro tenerlo sin actualizar.
- Eliminar todos los plugins que no sean estrictamente necesarios.
- Comprobar las compatibilidades de todo lo que queda.
- Instalar PHP7.0 y PHP7.1 en el servidor, opcionalmente PHP5.5 y PHP5.6.
- Cambiar la configuración del servidor para que cargue PHP7.1, si no funciona usar PHP7.0, si tampoco funciona volver al primer paso.
Porqué es tan importante PHP7
PHP ha dado un salto de rendimiento muy alto con respecto a la última versión 5. La máquina de Facebook que ejecuta sus códigos fuentes de PHP, llamada Hip Hop Virtual Machine, armó mucho revuelo al mejorar su rendimiento en hasta en 6-7 veces. Para Facebook supuso reducir el número de sevidores necesarios, con la consecuente reducción de coste.
Esta máquina HHVM ha alimentado a la comunidad PHP con muchas ideas. Todo esto ha desembocado en que ahora tenemos esta versión. En esta versión de PHP7 automáticamente se precompilan los códigos fuentes en PHP a un código intermedio. Este código intermedio, entre el lenguaje normal PHP y el lenguaje de máquina, es mucho más rápido.
Es decir, antes siempre se compilaba PHP en cada petición para generar las páginas. Había técnicas con las que minimizar estas compilaciones cacheando los resultados. Ahora bien, además de dichas técnicas para cachear lo resultados, tenemos que la compilación y ejecución de PHP es mucho más rápida. Hay tests por Internet que hablan de hasta un 500% o 600% de aumento en la velocidad.
Eliminar plugins, porqué
Es bien sabido que el punto fuerte de WP es la gran cantidad de plugins. Tenemos de todo para todo. Pero como en todo, hay de todo. Y si no quieres un poco de todo (bueno y malo), trata de filtrar y quedarte sólo con los plugins necesarios. Y por supuesto, piensa que un plugin en mal estado puede fastidiarte un WordPress entero, incluso un servidor entero. Trata de tener siempre una copia de seguridad por si las moscas.
Comprobar compatibilidades
Para esto es muy recomendable este plugin: PHP Compatibility Checker
Es muy sencillo de usar, lanzas escaneo de todo, esperas, y a trabajar con los resultados..
Instalando varias versiones de PHP
Lo siguiente es instalar en el servidor las versiones. En mi caso, en Linux, bastó con ejecutar ‘sudo apt install php7.0…’ eligiendo los módulos de PHP necesarios. De nuevo el mismo proceso para PHP7.1. Finalmente tenía en el servidor PHP5.5, 7.0 y 7.1.
Puede que tu host sea autoadministrado y no tengas que hacer nada. Si no necesitarás atención técnica o a un administrador de sistemas que haga esta parte.
Cambiando versiones de ejecución
Ahora bien, si tienes un servidor configurado manualmente, es probable que tengas que andar instalando o desinstalando para no enfrascarte con complejas configuraciones.
Si tienes un servidor con panel de control como Cpanel, Plesk, Virtualmin, etc.. tendrás una zona en donde podrás elegir qué directorios se ejecutan con qué versiones de PHP. Sólo queda ir probando hasta encontrar la configuración perfecta. La idea es aumentar a la máxima versión, si todo va bien ya lo tienes. Si no, reducimos versión hasta que todo vaya bien. Un caso de que hay fallos puede ser por ejemplo lo que me ha pasado con la versión 7.1, no veía bien todos los plugins:
¿Ves en la imagen que no aparecen los clásicos botones para desactivar, activar, borrar plugin? Es un error. Tuve que bajar la versión a PHP7.0 y ya todo funcionando. Revisé todo y aquí que estoy ahora escribiéndote esto.. 😉