
magento 2
Pedido aprovado que não vira fatura, e-mail de nova venda que nunca chega, indexador parado no admin. Antes de culpar o módulo de pagamento, abra a cron_schedule: se estiver tudo em missed, nenhum job do Magento está sendo executado e o resto da loja é só consequência.
SELECT status, COUNT(*) AS total
FROM cron_schedule
GROUP BY status;
SELECT job_code, status, scheduled_at, executed_at
FROM cron_schedule
ORDER BY schedule_id DESC
LIMIT 15; Missed quer dizer que o agendamento foi criado e ninguém apareceu para executar dentro da janela de tolerância: 15 minutos no padrão, o campo “Missed if Not Run Within” em Lojas > Configuração > Avançado > Sistema > Cron. Ou seja, quem gera a fila está vivo, quem consome não.
Aqui mora a maioria dos casos: o agendamento foi parar no root, ou no seu usuário de deploy, e não no dono dos arquivos. O -u do crontab só funciona com privilégio, daí o sudo na primeira linha:
sudo crontab -u www-data -l
sudo -u www-data php bin/magento cron:install
sudo -u www-data php bin/magento cron:run --group=default Se já existe um bloco do Magento naquele crontab, o cron:install responde “Crontab has already been generated and saved” e não faz nada; use -f pra sobrescrever. A linha que ele grava roda de minuto em minuto e joga a saída em var/log/magento.cron.log. E não instale isso no root: os arquivos que nascem em var, generated e pub/static ficam com dono errado e o PHP-FPM perde acesso depois.
Crontab certo e mesmo assim tudo cai em missed? O próximo lugar é o var/log/cron.log:
grep 'Could not acquire lock' var/log/cron.log | tail -20 Essa linha é o Magento desistindo do grupo porque a rodada anterior ainda segura o lock, quase sempre um job pesado que passa dos 15 minutos e atropela a janela de todo mundo atrás dele. Linha parada em running desde ontem não é a culpada: nas 2.4.7 e 2.4.8 o próprio observer marca essas linhas como error com a mensagem “Time out” depois de 24 horas, então não precisa sair dando DELETE na tabela. Ache o job_code lento e o resto da fila anda sozinho.
Se travou nisso e precisa de ajuda, me chama aqui.
Negar /.env no nginx parece resolvido até alguém pedir /wp-content/uploads/.env ou backup.sql. As regras que testei e os furos que…
O Search Console marca suas páginas 2, 3 e 4 como alternativas da página 1? Ajuste a tag canônica do…
Um módulo de terceiro plantou um banner no topo da loja e você não quer desinstalar nada: tire o bloco…
Importou o banco de produção e o site pula para o domínio antigo? Rode o UPDATE em core_config_data, limpe o…
Seu catch trata pedido inexistente e banco fora do ar do mesmo jeito. Veja como criar exceção customizada em PHP…
O form do admin salva mas abre em branco na edição: veja o getData() indexado pelo id da entidade e…