PHP日常任务自动化:5个能节省数小时工作的强大脚本

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

您的个人PHP助手:为什么自动化是一种超能力



想象一下周一的早晨。您来到办公室,打开笔记本电脑,所有日常事务都已处理完毕:备份已上传到服务器,提醒邮件已发送给客户,昨天的CSV报告已处理完毕并精美地打包成PDF。听起来像科幻小说?其实不然。



大多数PHP开发者(不仅限于PHP)会将高达30%的工作时间花在重复性的同类任务上。PHP自动化不是魔法,而是合理利用内置函数和少数几个库。今天我将向您展示5个真实脚本,您在阅读本文后10分钟内即可运行它们。



顺便说一句,如果您对Python自动化感兴趣,我们在PythonLib上有很棒的资料。但今天我们讨论PHP,因为它仍然在服务器端占据主导地位(高达77%的网站运行在PHP上)。



1. 自动清理和归档旧日志



日志文件像雪球一样越滚越大。昨天error.log文件还只有50MB,今天就已经500MB了。手动清理很痛苦。让我们编写一个PHP自动化脚本来处理这个任务。



脚本: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 "已归档: " . basename($file) . PHP_EOL; } } }}

// 使用方式:$rotator = new LogRotator('/var/log/myapp', '/backup/logs/archive');$rotator->rotate();?>


这个PHP自动化脚本做了三件事:查找超过30天的文件,将其压缩为GZIP格式,并移动到归档目录。每周通过CRON运行一次——然后您就可以忘记“磁盘已满”的问题。



2. 批量发送个性化电子邮件通知



假设您有一个在线商店。客户下了一个订单,需要向他们发送一封包含详细信息的邮件。手动操作很愚蠢。PHP任务自动化使用内置的mail()函数或PHPMailer可以解决这个问题。



示例:发送购物车放弃提醒



<?phpfunction sendAbandonedCartReminder(string $email, string $customerName, array $items): bool {    $subject = "您忘记了购物车,$customerName!🛒";        $message = "<h2>您好,$customerName!</h2>";    $message .= "<p>您留下了这些商品:</p><ul>";        foreach ($items as $item) {        $message .= "<li>{$item['name']} - {$item['price']} 卢布</li>";    }        $message .= "</ul><p><a href='https://yourshop.com/cart'>返回购物车</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);}

// 批量发送:$customers = [ ['email' => 'ivan@example.com', 'name' => '伊

博客

书籍推荐