【发布时间】:2011-10-08 13:22:57
【问题描述】:
我正在开发一个 Codeigniter (2.0.2) 应用程序,它将利用主数据库进行所有写入操作 (INSERT/UPDATE/DELETE) 和读取副本用于所有读取操作 (SELECT)。
现在我知道我可以在代码中访问两个不同的数据库对象以将各个请求路由到特定的数据库服务器,但我认为有更好的方法,自动化的方法。我将使用 MySQL 和 Active Record,并且还希望构建 Memcache 检查 - 虽然它不会立即使用,但我希望将来可以选择在此阶段内置。
我正在考虑是否可以添加某种钩子/库来拦截 $this->db->查询,以便发生以下情况:
1) 收到 SQL 查询
2) 检查是否有 SELECT 查询
2a) 如果 SELECT,查看 Memcache 是否处于活动状态,如果是,则编码 SQL 并检查 Memcache 以获取响应。
2b) 如果没有 memcache 响应,或者 Memcache 未处于活动状态,则通过 READ MySQL 服务器正常执行查询。
3) 未选择查询,因此通过 WRITE MySQL 服务器正常执行查询。
4) 返回响应。
我敢肯定,看看这个,它应该很简单,但无论我怎么看,我只是没有看到潜在的答案 - 但必须有一个!任何人都可以提供帮助/协助吗?
另外,我还希望能够记录所有写SQL命令进行故障排除,想必最好的办法是把3a) Write SQL command to plain text file ...引入到上述方案中。我不相信 MySQL 实际上会记录非 SELECT 查询......是吗?
【问题讨论】:
-
您找到解决方案了吗?我正在努力做到这一点。
标签: php codeigniter codeigniter-2