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-schedulerPrincipais 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.
Também na biblioteca
Gerador de QR Codes em PHP: biblioteca phpqrcode e alternativas
Cliente HTTP para Swift (iOS/macOS): top bibliotecas 2024
Event Bus e o padrão Observer em C# (.NET): implementação e exemplos
Trabalhando com tokens JWT em TypeScript: biblioteca jsonwebtoken e guia completo
Configuração de aplicações C++: bibliotecas e ferramentas para personalização flexível