可以兼容
ThinkPHP 可继续作为 RESTful API 服务运行,KingbaseES 通过 PHP PDO / PostgreSQL 兼容路径接入。
不能直接平移
TongWeb 是 Java EE / Jakarta EE 应用服务器,不建议直接部署 PHP 源码。
store 风险最高
store 是 TP5 老项目,MySQL DDL 和 SQL 方言较多,必须分模块迁移和回归。
推荐目标架构
PC / 小程序 / 设备 / 第三方系统
-> 东方通 TongWeb 或 Java API 网关
-> Nginx/OpenResty + PHP-FPM
-> ThinkPHP store / ai_api
-> KingbaseES + Redis + 文件/对象存储
东方通负责统一入口、鉴权、审计、限流和合规材料;ThinkPHP 保持后端 API;KingbaseES 替换 MySQL 需要做驱动、DDL、SQL 方言和数据迁移。
项目现状
| 项目 | 现状 | 迁移判断 |
|---|---|---|
| store | ThinkPHP 5.0,当前 Docker 使用 PHP 7.3 FPM,默认 MySQL。 | 高风险,需分查询、写入、设备支付、导出逐步迁移。 |
| ai_api | ThinkPHP 6.1,多应用,PHP 7.4,数据库配置集中。 | 适合作为第一阶段 KingbaseES + TongWeb POC。 |
| Docker/Nginx | Nginx 主站指向 store,/aizhct/ 转发 ai_api,双 PHP-FPM。 | 天然适合 API 网关模式,不适合 PHP 直接进 TongWeb。 |
SQL 改造重点
| MySQL 写法 | Kingbase/PostgreSQL 方向 |
|---|---|
| AUTO_INCREMENT | serial / bigserial / identity |
| UNSIGNED | 去掉,必要时加 CHECK |
| IFNULL | COALESCE |
| DATE_FORMAT | to_char |
| GROUP_CONCAT | string_agg |
| FIND_IN_SET | string_to_array / ANY,或关系表重构 |
| GET_LOCK / RELEASE_LOCK | pg_advisory_lock / unlock |
| ON DUPLICATE KEY UPDATE | ON CONFLICT DO UPDATE |
| @curRank | row_number() over (...) |
实施路线
0 准备确认 TongWeb 型号、Kingbase 版本、PDO 驱动和信创目录要求。
1 ai_api POC跑通连接、登录、读写、上传、TongWeb HTTP 调用。
2 ai_api 核心迁登录、用户、账单、营养建议、设备数据、支付回调。
3 store 查询先迁餐厅、菜品、人员、订单查询、统计只读。
4 store 写入再迁消费、充值、补贴、退款、设备、导出。
5 TongWeb接网关、鉴权、审计、限流、上传透传。
6 上线全量迁移、校验、切换、冒烟、保留回滚窗口。
POC 验收
- PHP 7.3 和 PHP 7.4 能加载 Kingbase/PgSQL PDO。
- ai_api 能连接 KingbaseES。
- 登录接口成功。
- 能读写一张核心业务表。
- mysql_zhct 等价连接能访问 Kingbase 对应库。
- 文件上传接口可用。
- TongWeb 能通过 HTTP 调用 ai_api。
- trace_id 在 TongWeb 与 PHP 日志中可对齐。
工期评估
| 阶段 | 预计时间 |
|---|---|
| 架构确认 + 环境准备 | 3-5 天 |
| ai_api Kingbase POC | 1-2 周 |
| ai_api 核心迁移 | 2-3 周 |
| store SQL 盘点和 DDL 转换 | 2-4 周 |
| store 核心模块迁移 | 4-8 周 |
| TongWeb 联调 | 1-2 周 |
| 压测、回归、信创材料 | 2-4 周 |
评审问题
- 东方通具体是 TongWeb、TongHttpServer,还是两者都要求?
- 客户是否允许 Nginx/OpenResty 与东方通共存?
- KingbaseES 是否启用 PostgreSQL 兼容模式?
- PHP 使用 pdo_pgsql 还是金仓专用 pdo_kdb?
- Redis、对象存储、外部 AI/支付/人脸服务是否也要求国产替代?
- 生产迁移允许多长停机窗口?