基于Webman的多平台广告管理系统
本文介绍一个基于Webman框架开发的开源多平台广告管理系统。系统已对接29个国内外广告平台,支持统一投放管理、跨平台报表、告警监控和自动出价。技术栈包含PHP 8.2、Vue 3、MySQL、Redis、Elasticsearch,并提供Flutter与HarmonyOS客户端。文章涵盖系统架构、安全机制、高并发优化及快速部署方式。
本文介绍一个基于 Webman 框架开发的开源多平台广告管理系统,目前已对接 29 个广告平台,支持统一投放管理、跨平台数据报表、告警监控、自动出价,并提供 Web、Flutter、HarmonyOS 多端访问。项目采用 PHP 8.2 + webman v2 作为服务端,管理后台使用 Vue 3 + Element Plus,数据层基于 MySQL、Redis 与 Elasticsearch,适合需要聚合管理多个广告账户的团队或个人开发者。
项目概览
- 项目地址:https://github.com/erikwang2013/ads-php
- 功能模块:docs/features.md
- API 文档:docs/api.md,本地可通过
/apidoc访问 - 版本对比:Lite 版开源,Standard 与 Full 版可联系作者获取
支持的广告平台
系统共接入 29 个广告平台,其中国内 16 个,国际 13 个。
国内平台(16 个)
| 平台 | 适配器 | 认证方式 |
|---|---|---|
| 巨量引擎 | Juliang | OAuth2 Access-Token |
| 百度营销 | Baidu | OAuth2 + 信封签名 |
| 淘宝/阿里妈妈 | Taobao | OAuth2 + MD5 |
| 腾讯广告 | Tencent | OAuth2 + nonce |
| 快手磁力引擎 | Kuaishou | OAuth2 URL参数 |
| 小红书蒲公英 | Xiaohongshu | OAuth2 Bearer |
| 微博粉丝通 | OAuth2 Bearer | |
| B站花火 | Bilibili | OAuth2 Bearer |
| 优酷广告 | Youku | OAuth2 + MD5 |
| 美团广告 | Meituan | OAuth2 Bearer |
| 知乎广告 | Zhihu | OAuth2 Bearer |
| 360推广 | Qihoo360 | API Key + Sign |
| 搜狗推广 | Sogou | API Key + Sign |
| 友盟 | Umeng | API Key + MD5 |
| 京东京准通 | Jingdong | OAuth2 + MD5 |
| 拼多多广告 | Pinduoduo | OAuth2 + 自定义Sign |
国际平台(13 个)
| 平台 | 适配器 | 认证方式 |
|---|---|---|
| Google Ads | OAuth2 + GAQL | |
| YouTube Ads | Youtube | OAuth2 + GAQL |
| Meta Ads | Meta | OAuth2 URL参数 |
| TikTok Ads | Tiktok | OAuth2 Access-Token |
| LinkedIn Ads | OAuth2 Bearer | |
| Snapchat Ads | Snapchat | OAuth2 Bearer |
| Pinterest Ads | OAuth2 Bearer | |
| Twitter/X Ads | OAuth2 Bearer | |
| Amazon Ads | Amazon | OAuth2 + Profile |
| The Trade Desk | TheTradeDesk | HMAC-SHA256 |
| Spotify Ads | Spotify | OAuth2 Bearer |
| Twitch Ads | Twitch | OAuth2 Bearer + ClientId |
| Netflix Ads | Netflix | OAuth2 client_credentials |
技术栈
| 层 | 技术 | 说明 |
|---|---|---|
| 服务端 | webman v2 + PHP 8.2+ | 7 个插件,65+ API 端点 |
| 数据库 | MySQL 8.0 | 28 张表,erik_ 前缀,Snowflake BIGINT 主键 |
| 缓存 | Redis 7 | 三级缓存(L1内存/L2 APCu/L3 Redis)、限流计数、Pub/Sub、消息队列 |
| 搜索 | Elasticsearch | webman-scout 自动索引同步 |
| 管理后台 | webman-admin v2 + Vue 3 + TypeScript + Element Plus | PHP 后端(8789端口),ServiceProxy 调用业务 API(8788端口),18 页面,ECharts 可视化 |
| Flutter | Dart 3 + Riverpod + GoRouter + fl_chart | PC/Mobile 响应式,Desktop Shell 布局,12 页面 |
| HarmonyOS | ArkTS + ArkUI | HTTP 客户端已就绪,UI 规划中 |
| 部署 | Docker + Nginx + GHCR | Docker Compose 一键启动,GitHub Actions 自动构建推送 |
架构设计
整体分为 service 和 admin 两个独立服务:
service/:webman v2 用户端业务 API 服务,监听 8788 端口,处理广告平台对接、OAuth 授权、数据同步、报表引擎、告警监控等业务逻辑。admin/:webman-admin v2 独立管理后台,监听 8789 端口,包含 PHP 后端(认证鉴权、用户管理、系统配置)和 Vue 3 SPA 前端。- Admin 通过 ServiceProxy(基于 cURL 的 HTTP 代理)调用 service API,转发管理员请求并携带 JWT Token。
开发模式下,Vite dev server(5173 端口)将 /api 代理至 service:8788;生产模式下,Nginx 将 / 路由至 admin:8789,将 /api/ 路由至 service:8788。
系统架构图如下:




完整版架构图、安全架构、高并发设计可参考项目中的 docs/architecture.md 与 docs/diagrams/。
Erik Stack 集成
项目集成了多款自研 PHP 包,用于提升开发效率与安全性:
| 包 | 用途 |
|---|---|
| snowflake-php | 分布式 Snowflake ID 生成 |
| hashids | API ID 参数加解密 |
| jwt-webman | JWT 认证令牌 |
| encryption | API 层敏感数据加解密 |
| encryptable | DB 字段级自动加解密 |
| webman-scout | Elasticsearch 数据同步 |
| season | 国家旗帜标识 |
| poster-php | 滑块验证码(登录保护) |
国际化
所有界面支持中文(zh-CN)和英文(en)双语切换:
- Admin:vue-i18n v9,TopBar 语言下拉菜单,localStorage 持久化
- Service API:
erik\support\I18n,通过Accept-Language请求头或?lang=参数切换 - Flutter:AppLocalizations + Delegate,自动检测系统语言
- HarmonyOS:StringResources,通过
setLang()切换
安全机制
系统在 Service 端和 Admin 端分别构建了多层安全防护,覆盖输入检测、认证、请求校验、响应头、数据保护等 5 大类,共 22 项防护能力,包括 XSS/路径遍历/SQL 注入检测、JWT Token 绑定、登录节流、并发会话限制、CSRF Token、防重放攻击、接口限流、CSP 响应头、字段级存储加密等。
安全架构图如下:

认证方面,服务端和管理后台统一使用 admin_users 表 + bcrypt 哈希,JWT 有效期为 24 小时并支持 refresh 轮换。所有操作都会记录 IP、User-Agent、Client-Platform 和操作详情,删除、解绑、批量操作采用“输入确认词”模式进行二次确认。
高级功能
| 功能 | 说明 | 技术 |
|---|---|---|
| 素材库 | 图片/视频上传管理、画廊预览、复制 URL | AssetController + Vue 画廊 |
| 预算预警 | 日预算消耗实时追踪、三段告警(50/80/100%) | BudgetAlertService + 15min Cron |
| 投放日历 | 跨平台 Gantt 图、月/周视图、按平台着色 | CalendarService + Vue Gantt |
| 跨平台归因 | 5 种归因模型、30 天回溯 | AttributionEngine + ECharts |
高并发优化
为支撑多平台数据同步和高频请求,系统在多个层面做了性能优化:
- 数据库读写分离:主库 + 只读副本,SELECT 自动路由到副本
- DB 连接池:PDO 持久连接 + 时区初始化预热
- Redis 连接池:持久连接 + 读写分离
- 三级缓存:L1 进程内存 → L2 APCu → L3 Redis
- 消息队列异步:Redis List 4 通道(sync/report/export/notification)
- Nginx 分级限流:30r/s + burst 20 + 20 并发连接
- 水平扩展:upstream 多实例 + 故障转移 + sticky session
- CDN 加速:静态资源 expires 30d + immutable + gzip_static
快速启动
一键 Web 安装(推荐)
启动服务后浏览器访问 /install 进入安装向导:
# 启动管理后台 (端口 8789)
cd admin && composer install && php start.php start
# 打开浏览器访问 http://localhost:8789/install
安装向导会引导你完成数据库连接、Redis 配置、管理员账户设置,最后自动建库、执行 install.sql 创建 28 张表并写入种子数据。
Docker 部署(生产环境)
# 启动全部服务 (MySQL + Redis + PHP + Nginx)
docker-compose up -d
# 初始化数据库(创建表 + 种子数据)
make db-init
启动后,管理后台访问 http://localhost,安装向导访问 http://localhost/install,API 文档与更多信息见项目仓库。





暂无评论,期待您的发言...