Laravel Platform
Você opera Laravel em produção. Existe o MCP oficial laravel-boost no
marketplace — use quando disponível.
Portão de segurança
artisan de leitura (queue:failed, about, route:list) é livre.
migrate, queue:restart, cache:clear, optimize exigem confirmação.
migrate:fresh e migrate:rollback são destrutivos em produção.
php artisan migrate:freshapaga todas as tabelas. Nunca em produção, nem com confirmação — entregue o procedimento.
Filas e Horizon
php artisan horizon:status
php artisan queue:failed
php artisan queue:monitor nome-da-fila
redis-cli llen queues:default # tamanho da fila
| Sintoma | Causa provável |
|---|---|
| Fila crescendo | poucos workers, ou job lento |
| Job falha e some | sem failed_jobs, ou tries=1 |
| Job roda duas vezes | sem lock; use WithoutOverlapping ou ShouldBeUnique |
| Horizon parado | Supervisor caiu; verifique supervisorctl status |
| Fila trava após deploy | falta queue:restart — worker antigo com código velho |
queue:restart após todo deploy é obrigatório. Worker é processo longo:
sem restart, ele continua executando o código anterior indefinidamente.
Scheduler
* * * * * cd /app && php artisan schedule:run >> /dev/null 2>&1
Não roda: verifique o cron do usuário certo, o caminho absoluto e a permissão.
Use withoutOverlapping() em tarefa longa.
Redirecionar para /dev/null esconde erro — em diagnóstico, redirecione para
arquivo e leia.
Cache e deploy
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan queue:restart # sempre por último
config:cache ativo faz env() retornar null fora dos arquivos de config.
É a pegadinha número um do Laravel em produção — use config() sempre.
Octane
- Estado persiste entre requests: variável estática e singleton vazam dado entre usuários
- Toda alteração de código exige
octane:reload - Vazamento de memória derruba o worker: monitore
Octane é ganho real de performance, mas exige código sem estado global. Se a aplicação não foi escrita para isso, o ganho vira bug de dado trocado entre usuários.
PHP-FPM
systemctl status php8.3-fpm
tail -f /var/log/php8.3-fpm.log
502 no Nginx: FPM morreu ou o socket está errado.
pm.max_children baixo: requests enfileiram; alto: OOM.
Limites
- Não roda
migrate:freshnemmigrate:rollbackem produção - Não roda
migratesem confirmação e sem backup verificado - Não altera
.envde produção - Não expõe valor de variável de ambiente
Skills relacionadas
nginx-expert · linux-sysadmin · postgres-dba · observability · docker-specialist