要在 cPanel 环境中实现长期统计,您需要建立一个增量同步机制。因为 PMG 的 API 数据通常 随日志轮转而消失(通常只保留 7-30 天),而本地数据库(MySQL/MariaDB)可以永久存储。 以下是实现步骤: 1. 在 cPanel 创建数据库表 登录 cPanel 的 MySQL® Databases,创建一个名为 pmg_stats 的数据库,并执行以下 SQL 建立表结构: # mysql > CREATE DATABASE advcpanelpmg > CREATE USER 'advcpanelpmg'@'localhost' IDENTIFIED WITH mysql_native_password BY 'W8THYSwz'; > GRANT ALL PRIVILEGES ON advcpanelpmg.* TO 'advcpanelpmg'@'localhost' WITH GRANT OPTION; > FLUSH PRIVILEGES; > USE advcpanelpmg > CREATE TABLE IF NOT EXISTS `sender_stats` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `stat_date` DATE NOT NULL, -- 统计日期 `sender_domain` VARCHAR(255), -- 发件域名 `mail_count` INT DEFAULT 0, -- 邮件总数 `spam_count` INT DEFAULT 0, -- 垃圾邮件数 `bytes_total` BIGINT DEFAULT 0, -- 总流量 UNIQUE KEY `daily_domain` (`stat_date`, `sender_domain`) -- 防止重复导入 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 2. 修改 PHP 脚本进行数据持久化 将之前的 API 调用逻辑封装,并添加数据库写入操作。建议每天凌晨运行一次,统计昨天的全天数据。 # vi pmg-db.php ... 3. 在 cPanel 设置定时任务 (Cron Job) 为了实现自动趋势分析,您无需手动运行脚本。 登录 cPanel,找到 Cron Jobs。 设置运行时间为:每天凌晨 00:05 (5 0 * * *)。 命令行输入(假设脚本名为 sync_pmg.php): /usr/local/bin/php /home/username/public_html/sync_pmg.php > /dev/null 2>&1 4. 长期分析建议 趋势图表:您可以使用简单的 SQL 语句按月汇总: SELECT stat_date, SUM(mail_count) FROM sender_stats GROUP BY MONTH(stat_date)。 异常监控:如果某天的 mail_count 突然比平均值高出 300%,可以通过 PHP 发送告警邮件给您,及时发现被盗号发送垃圾邮件的情况。