Seu assistente pessoal em PHP: por que a automação é um superpoder
Imagine uma segunda-feira de manhã. Você chega ao escritório, abre o notebook, e toda a rotina já está feita: backups enviados ao servidor, lembretes enviados aos clientes, e os relatórios CSV de ontem já processados e lindamente empacotados em PDF. Parece fantasia? Pois não é.
A maioria dos desenvolvedores PHP (e não só) gasta até 30% do tempo de trabalho em tarefas repetitivas e monótonas. Automação em PHP não é mágica, mas sim o uso inteligente de funções nativas e algumas bibliotecas. Hoje vou mostrar 5 scripts reais que você poderá executar em apenas 10 minutos após ler este artigo.
A propósito, se você tem interesse em automação com Python — temos ótimos materiais no PythonLib. Mas hoje vamos falar de PHP, porque ele ainda domina o lado do servidor (até 77% dos sites rodam nele).
1. Limpeza e arquivamento automáticos de logs antigos
Os logs crescem como uma bola de neve. Ontem o arquivo error.log tinha 50 MB, hoje já tem 500. A limpeza manual é um sofrimento. Vamos escrever um script PHP para automatizar essa tarefa.
Script: LogRotator
<?phpclass LogRotator { private string $logDir; private string $archiveDir; private int $maxFileAgeDays;
public function __construct(string $logDir, string $archiveDir, int $maxFileAgeDays = 30) { $this->logDir = rtrim($logDir, '/'); $this->archiveDir = rtrim($archiveDir, '/'); $this->maxFileAgeDays = $maxFileAgeDays; }
public function rotate(): void { if (!is_dir($this->archiveDir)) { mkdir($this->archiveDir, 0755, true); }
$files = glob($this->logDir . '/*.log'); foreach ($files as $file) { $fileAge = time() - filemtime($file); if ($fileAge > $this->maxFileAgeDays * 86400) { $archiveName = $this->archiveDir . '/' . basename($file) . '.' . date('Ymd') . '.gz'; $gzData = gzencode(file_get_contents($file), 9); file_put_contents($archiveName, $gzData); unlink($file); echo "Arquivado: " . basename($file) . PHP_EOL; } } }}
// Uso:$rotator = new LogRotator('/var/log/myapp', '/backup/logs/archive');$rotator->rotate();?>Este script de automação PHP faz três coisas: encontra arquivos com mais de 30 dias, compacta-os em GZIP e os move para o arquivo. Execute-o via CRON uma vez por semana — e esqueça o "disco cheio".
2. Envio em massa de notificações por e-mail personalizadas
Suponha que você tenha uma loja virtual. O cliente fez um pedido e precisa receber um e-mail com os detalhes. Fazer isso manualmente é tolice. Automação de tarefas em PHP usando a função nativa mail() ou PHPMailer resolve o problema.
Exemplo: envio de lembretes de carrinhos abandonados
<?phpfunction sendAbandonedCartReminder(string $email, string $customerName, array $items): bool { $subject = "Você esqueceu o carrinho, $customerName! 🛒"; $message = "<h2>Olá, $customerName!</h2>"; $message .= "<p>Você deixou estes itens:</p><ul>"; foreach ($items as $item) { $message .= "<li>{$item['name']} - {$item['price']} R$</li>"; } $message .= "</ul><p><a href='https://yourshop.com/cart'>Voltar ao carrinho</a></p>"; $headers = "MIME-Version: 1.0\\r"; $headers .= "Content-Type: text/html; charset=UTF-8\\r"; $headers .= "From: shop@yourshop.com\\r"; return mail($email, $subject, $message, $headers);}
// Envio em massa:$customers = [ ['email' => 'ivan@example.com', 'name' => 'I