公众号多入口开发笔记
随着业务发展, 商户也提出了需要一个公众号入口网页的需求, 然而平时, 我们的公众号却是只给个人用户使用的. 虽然微信提供的公众号菜单可以提供多入口, 然而. 随着将来合作商户来自各行各业, 则可能各自面临不同的需求. 这个时候再去把公众号菜单搞得庞杂起来不是一个明智的选择, 比较好的解决办法是根据用户角色提供各自不同的入口页面.
随着业务发展, 商户也提出了需要一个公众号入口网页的需求, 然而平时, 我们的公众号却是只给个人用户使用的. 虽然微信提供的公众号菜单可以提供多入口, 然而. 随着将来合作商户来自各行各业, 则可能各自面临不同的需求. 这个时候再去把公众号菜单搞得庞杂起来不是一个明智的选择, 比较好的解决办法是根据用户角色提供各自不同的入口页面.
我在项目中对PDOPool进行了二次封装, 并写了一个简易的SqlBuilder, 目的还是为了简化开发. 从开发过程到项目上线都没发现问题。本以为一切顺利,然而直到一天,服务器升级一个功能需要重启的时候,意外出现了。系统启动的时候卡死~, 直觉告诉我,这是发生死锁了。然而,服务不能停,智能多次重启的方法,总算成功启动了一次。接下来是排查问题的过程。在程序入口多处加入日志打印后发现,通过模拟程序启动的时候的大量重连进来的现场后发现,程序卡死在 DbPool->get,原来真相在这。
在公司的一个项目中, 使用 PHP + Swoole开发一个常驻内存服务端, 对 \Swoole\Database\PDOPool 进行了封装. 编写了一个查询语句构造器. 因为要对 查询结果进行类型转换, 我的解决思路是在系统启动对时候, 通过遍历数据库连接, 对数据库中的表结构进行扫描, 并将其作为配置 缓存在 config/tables_gen.php 文件中. 一切看上去很美好, 知道我将工作进程根据CPU核心数配置成多个时候, 问题出现了.
Nginx 提供了许多种负载均衡方案,比如轮询、ip_hash、等等。 基本上能满足大部分场合,在最新的项目中、根据项目特点、后期业务负载扩展考虑。提供一种Nginx+Swoole的新的负载均衡方案。
Swoole 下提供了协程化的Mysql连接池类, 我们可以很方便地使用它进行数据库操作. 然而, PDO的一个缺点是 无论你的数据库字段是什么类型的, 返回的结果总是 string. 这无论是对于前端还是后端开发人员来说,在后续数据处理中会造成诸多不便, 解决思路是, 在程序启动的时候扫描数据库连接和数据表结构, 并生成对应的字段类型映射关系.
在酒店业设计的过程中, 房间的价格、房间名字等信息, 可能会随着业务的需要而经常调整. 但我们的订单记录此时引用关联的房间信息也会随着更新。这对于用户查看历史订单是不友好的。在一些大型系统设计中,会使用快照的方法保存该订单关联的所有信息, 或者直接在订单记录表中保存关联信息, 无论哪种方式都会比较臃肿.造成不必要的存储空间浪费.