Su asistente personal en PHP: por qué la automatización es una superpotencia
Imagine la mañana del lunes. Llega a la oficina, abre su portátil y toda la rutina ya está hecha: las copias de seguridad están subidas al servidor, se han enviado recordatorios a los clientes y los informes CSV de ayer ya están procesados y empaquetados en PDF. ¿Suena a ciencia ficción? Pues no.
La mayoría de los desarrolladores de PHP (y no solo) pierden hasta el 30% de su tiempo de trabajo en tareas repetitivas y monótonas. La automatización en PHP no es magia, sino el uso inteligente de funciones integradas y un par de bibliotecas. Hoy les mostraré 5 scripts reales que podrán ejecutar en solo 10 minutos después de leer este artículo.
Por cierto, si les interesa la automatización en Python, en PythonLib tenemos excelentes materiales. Pero hoy hablamos de PHP, porque sigue dominando el lado del servidor (hasta el 77% de los sitios web funcionan con él).
1. Limpieza y archivado automático de registros antiguos
Los registros crecen como una bola de nieve. Ayer el archivo error.log pesaba 50 MB, y hoy ya son 500. La limpieza manual es un dolor. Escribamos un script PHP para automatizar esta tarea.
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 "Archivado: " . basename($file) . PHP_EOL; } } }}
// Uso:$rotator = new LogRotator('/var/log/myapp', '/backup/logs/archive');$rotator->rotate();?>Este script de automatización PHP hace tres cosas: encuentra archivos de más de 30 días, los comprime en GZIP y los mueve al archivo. Ejecútelo mediante CRON una vez a la semana y olvídese del "disco lleno".
2. Envío masivo de notificaciones por correo electrónico personalizadas
Supongamos que tiene una tienda en línea. Un cliente realiza un pedido y necesita recibir un correo con los detalles. Hacerlo manualmente es una tontería. La automatización de tareas en PHP utilizando la función integrada mail() o PHPMailer resolverá el problema.
Ejemplo: envío de recordatorios de carritos abandonados
<?phpfunction sendAbandonedCartReminder(string $email, string $customerName, array $items): bool { $subject = "¡Olvidó su carrito, $customerName! 🛒"; $message = "<h2>¡Hola, $customerName!</h2>"; $message .= "<p>Dejó estos productos:</p><ul>"; foreach ($items as $item) { $message .= "<li>{$item['name']} - {$item['price']} RUB</li>"; } $message .= "</ul><p><a href='https://yourshop.com/cart'>Volver al carrito</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);}
// Envío masivo:$customers = [ ['email' => 'ivan@example.com', 'name' => 'Iván']