Agendador de Tarefas PHP

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é um agendador de tarefas em PHP?

Um agendador de tarefas (task scheduler) é uma ferramenta para automatizar a execução de operações repetitivas em aplicações PHP. Diferente do CRON, que é gerenciado no nível do servidor, as bibliotecas para PHP permitem definir cronogramas de forma flexível diretamente no código do projeto, integrando tarefas com a lógica de negócios (por exemplo, envio de mailings, limpeza de cache, geração de relatórios).

Para que serve um agendador de tarefas?

Sem um agendador, os desenvolvedores são forçados a executar scripts manualmente via CRON, o que complica o gerenciamento de dependências e os testes. O agendador PHP resolve esses problemas:

  • Flexibilidade: tarefas podem ser pausadas, e a frequência alterada sem editar arquivos do sistema.
  • Logging: mecanismos integrados para registro de erros e execução.
  • Filas: integração com RabbitMQ, Redis para tarefas em segundo plano.
  • Testes: é possível executar tarefas manualmente pelo console ou através de testes.

Instalação

Um agendador popular é o vlucas/phpdotenv (não confundir com dotenv) ou cron-expression. No entanto, o mais funcional é o symfony/scheduler (do Symfony) ou peppeocchi/php-cron-scheduler. Instalação via Composer:

composer require peppeocchi/php-cron-scheduler

Principais funcionalidades

  • Suporte a expressões CRON: */5 * * * * — a cada 5 minutos.
  • Tarefas únicas: com horário de execução exato.
  • Tarefas condicionais: execução apenas se uma condição for atendida (por exemplo, se um arquivo existe).
  • Execução paralela: tarefas não bloqueiam umas às outras.
  • Tratamento de erros: repetição automática em caso de falha.

Exemplo de código em PHP

require 'vendor/autoload.php';

use GO\\Scheduler;

$scheduler = new Scheduler();

// Tarefa a cada 10 minutos$scheduler->php('/path/to/script.php') ->everyMinute(10) ->output('/tmp/output.log');

// Tarefa com expressão CRON$scheduler->call(function() { echo "Enviando email...";})->cron('0 9 * * 1'); // Toda segunda-feira às 9h

// Tarefa condicional$scheduler->php('/path/to/report.php') ->daily() ->when(function() { return file_exists('/tmp/flag.txt'); });

$scheduler->run();

Quando usar?

O agendador é ideal para:

  • Limpeza regular de arquivos temporários ou do banco de dados.
  • Envio de push notifications agendadas.
  • Atualização de dados agregados (por exemplo, rankings).
  • Integração com APIs externas (parsing, sincronização).

Evite usar o agendador para tarefas que exigem execução instantânea — para isso, filas (como RabbitMQ ou Redis) são mais adequadas.

Conclusão

O agendador de tarefas em PHP é uma ferramenta poderosa para automatizar a rotina. Ele é especialmente útil em projetos onde as entradas CRON no servidor são inconvenientes ou exigem alterações frequentes. A instalação via Composer leva um minuto, e as configurações flexíveis permitem adaptar o cronograma a qualquer processo de negócio.

Recommendations