一次开发踩坑笔记
1. 起因.
在公司的一个项目中, 使用 PHP + Swoole开发一个常驻内存服务端, 对 \Swoole\Database\PDOPool 进行了封装. 编写了一个查询语句构造器. 因为要对 查询结果进行类型转换, 我的解决思路是在系统启动对时候, 通过遍历数据库连接, 对数据库中的表结构进行扫描, 并将其作为配置 缓存在 config/tables_gen.php 文件中. 一切看上去很美好, 知道我将工作进程根据CPU核心数配置成多个时候, 问题出现了.
在公司的一个项目中, 使用 PHP + Swoole开发一个常驻内存服务端, 对 \Swoole\Database\PDOPool 进行了封装. 编写了一个查询语句构造器. 因为要对 查询结果进行类型转换, 我的解决思路是在系统启动对时候, 通过遍历数据库连接, 对数据库中的表结构进行扫描, 并将其作为配置 缓存在 config/tables_gen.php 文件中. 一切看上去很美好, 知道我将工作进程根据CPU核心数配置成多个时候, 问题出现了.
Nginx 提供了许多种负载均衡方案,比如轮询、ip_hash、等等。 基本上能满足大部分场合,在最新的项目中、根据项目特点、后期业务负载扩展考虑。提供一种Nginx+Swoole的新的负载均衡方案。
Swoole 下提供了协程化的Mysql连接池类, 我们可以很方便地使用它进行数据库操作. 然而, PDO的一个缺点是 无论你的数据库字段是什么类型的, 返回的结果总是 string. 这无论是对于前端还是后端开发人员来说,在后续数据处理中会造成诸多不便, 解决思路是, 在程序启动的时候扫描数据库连接和数据表结构, 并生成对应的字段类型映射关系.