Laravel Octane
Para quien no lo sepa, el 12 de mayo salió la version 1.0 de Laravel Octane, un paquete oficial cuya finalidad es mejorar aun más el rendimiento de laravel. Dejo un poco de información por aqui y al final dejo los links oficiales para quien quiera mancharse las manos.
Tampoco he hecho aun ninguna prueba, pero lo tengo pendiente
¿Qué es Laravel Octane?
Como he dicho antes, Laravel Octane es un paquete para Laravel cuya función principal es mejorar el rendimiento de laravel. Este paquete funciona con PHP 8 y, por debajo, hace uso de Swoole y RoadRunner, dos servidores de aplicaciones que se encargan de servir tu aplicación de Laravel
Mejoras de rendimiento
Con una app tradicional de php a través de un servidor web como nginx, cada solicitud genera un worker PHP-FPM y ejecuta, de principio a fin, todas las tareas necesarias para atender esa solicitud.
En el caso de Laravel, esto significa que se inicia el Framework, todos los proveedores de servicios se registran en el contenedor, se inician ellos mismos, la solicitud pasa por una lista de clases de middleware, llega a su controlador, se renderiza una vista , etc. hasta que finalmente obtengamos una respuesta de nuestro servidor.
En cambio, con Laravel Octane ( utilizando Swoole o RoadRunner ), seguimos teniendo un worker para cada solicitud, pero todos comparten el mismo framework de arranque. Esto significa que solo la primera solicitud va a realizar los procesos que inician el framework (incluidos todos los proveedores de servicios, etc.) y lo mantiene en memoria, mientras que el resto de solicitudes se aprovechan de no tener que hacer esto.
RoadRunner / Swoole
Os dejo los links de cada uno de ellos para que podais verlos, aunque por lo que me he informado yo, lo que interesa a priori es utilizar Laravel Octane con Swoole debido a que agregar algunas características nuevas a laravel.
Características específicas de Swoole
Workers
Con Swoole y Laravel Octane, se lanzará un worker por cada nucleo de CPU (por defecto), y los workers serán los que se encargarán de realizar distintas tareas como:
Tareas concurrentes
Permite realizar múltiples tareas al mismo tiempo y el "return" se devolverá una vez que todas hayan finalizado. (Cada tarea la hace un worker al mismo tiempo)
Ticks o intervalos
Un poco la idea del setInterval de javascript (aunque aún no hay forma de pararlos a placer :P)
Caché de Octane
Una caché a la que pueden acceder todos los workers (y supuestamente más rapida, aunque ni idea de esto comparado con redis por ejemplo)
Otras cosas de Laravel Octane
Seguramente me deje millones de cosas que comentar, pero os dejo un par que no voy a entrar en detalle y creo que son interesantes:
- Enrutamiento de Octane: Para llegar directamente al controlador sin utilizar ningun middleware (tanto propios como del framework).
- Listeners propios: Para controlars nuevos workers, ticks, requests, operations..
- Laravel Forge ya lo tiene implementado para utilizarlo. (es así como lo he descubierto xD)
Links
Os dejo por aqui varios links de interés:
- https://laravel.com/docs/8.x/octane
- https://laravel-news.com/laravel-octane-1-0-0
- https://beyondco.de/blog/laravel-octane-introduction (cuando estaba en beta)
- https://www.laraveltip.com/todo-lo-que-tenes-que-saber-sobre-laravel-octane/ (una traduccion del post anterior)
- https://robertodev.medium.com/laravel-octane-is-here-9ce026f6180e (aqui levantan un laravel octane desde cero)
Para Finalizar
Pues ale, ahí os dejo el hilo xD
Yo tengo pendiente probarlo, asi que ya comentaré por aqui cuando tenga tiempo para hacer las pruebas con algo en condiciones xD