Octane o futuro do Laravel

Hoje muito se fala sobre performace em projetos, e por causa disso, o Nodejs e o MongoDb são tão utilizandos, principalmente quando falamos de API’s.

Com a chegada do PHP 8 e diversas novas features e extensões como a swoole, que vamos falar um pouco hoje nós temos acesso a um desempenho muito superior ao que encontramos hoje em projetos padrões do laravel, além disso acesso a processamento de dados numa quantidade muito significativa, segundo a documentação são certa de 2 milhões de operações de escrita e leitura que podem acontecer por SEGUNDO, utilizando o cache do octane, que utiliza por baixo dos panos as tabelas swoole.

Só para mostrar alguns dados de benchmark para termos uma real noção do desempenho.

Tempo para atender uma solicitação
Número de solicitações por segundo

Para isso o octane trabalhar com workers que podem atender diversas solicitações de forma assincrona.

Em sua essência, o Laravel Octane opera no princípio da arquitetura orientada a eventos. Em vez de bloquear o thread principal para lidar com cada solicitação, o Octane usa processamento assíncrono, permitindo que várias solicitações sejam tratadas simultaneamente sem deixar o aplicativo lento. Imagine um call center movimentado, onde vários operadores lidam com chamadas simultaneamente, garantindo que ninguém fique esperando.

Bom mas vamos ver como criar um projeto básico utilizando o octane. A documentação do laravel é sempre bastante clara sobre como criar e configurar um projeto utilizando o octane então vou colocar a sequencia de comandos e precisando de mais configurações acredito que a documentação deixa claro os pontos.

composer create-project laravel/laravel example-app
cd example-app
composer require laravel/octane
php artisan octane:install --server=swoole

Bom, agora temos um projeto configurado para atender requisições swoole. Para subir podemos utilizar.

php artisan octane:start --watch

O — watch é necesario porque o octane tem um cache muito agressivo, então se você não colocar o watch, as mudanças nas rotas e controller não vão espelhar nas requests.

Get pedropcardoso’s stories in your inbox

Join Medium for free to get updates from this writer.Subscribe

Remember me for faster sign in

Vamos criar um exemplo utilizando o cache octane, tem 2 formas de utilizar isso você pode utilizar a facade do cache padrão do laravel

Cache::store('octane')->put('framework', 'Laravel', 30);

Dentro do arquivo octane.php você tem algumas configurações interessantes para definir aqui cito algumas.

// config/octane.php
'server' => env('OCTANE_SERVER', 'swoole'),
'workers' => env('OCTANE_WORKERS', swoole_cpu_num() * 2),


'watch' => [
'directories' => [
'app',
'bootstrap',
'config',
'database',
'public/**',
'resources/**',
'routes',
'composer.lock',
],

'warm' => [
...App\Providers\RouteServiceProvider::class,
...App\Providers\EventServiceProvider::class,
],

'exclude' => [
'node_modules',
'vendor',
],
],

'tables' => [
'example:1000' => [
App\Models\Example::class,
],
],

'cache' => [
'rows' => 1000,
'bytes' => 10000,
],

'flush' => [
...App\Providers\RouteServiceProvider::class,
...App\Providers\EventServiceProvider::class,
],
'garbage' => 50,

Algumas explicações sobre estas configurações:

  1. server: Define o servidor a ser usado (Swoole ou RoadRunner).
  2. workers: Define o número de workers do Octane. Por padrão, é o dobro do número de CPUs.
  3. watch: Define quais diretórios e arquivos o Octane deve observar para reiniciar automaticamente quando houver alterações.
  4. warm: Lista de serviços que devem ser “aquecidos” (inicializados) quando o Octane inicia.
  5. flush: Lista de serviços que devem ser “limpos” entre as requisições.
  6. tables: Define tabelas em memória para acesso rápido a dados frequentemente utilizados.
  7. cache: Configura o cache de objetos em memória.
  8. max_execution_time: Define o tempo máximo de execução de uma requisição.

Estas configurações podem ser ajustadas para otimizar o desempenho da sua aplicação específica. É importante testar diferentes configurações para encontrar o melhor equilíbrio entre desempenho e uso de recursos para o seu caso de uso.

Fonte: https://ppcardoso.medium.com/octane-o-futuro-do-laravel-fc9fd7eeda92

Referências :

https://medium.com/geekculture/speed-up-your-laravel-projects-using-laravel-octane-swoole-server-a39f4a7fa889
Please follow and like us:
Pin Share

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

RSS
Follow by Email
WP Radio
WP Radio
OFFLINE LIVE