redis相关
1.集合元素不宜过多
2.php redis pipeline 不支持
mongo 相关
1. 基于mongo连接数限制,war的集群架构制约下,php进程很快就会把一个mongo实例连接数占满,与腾讯DBA沟通,由mongo集群来解决连接数占满的问题
php 相关
1.问题描述:
腾讯dba给的mongo数据库账号密码 含有 @,:%等字符,直接连接数据库会与数据库指定的特殊字符冲突,
导致连接不上
解决:
1.直接把dsn串中的账号密码含有特殊字符的 用rawurlencode函数进行urlencode
改前: 'mongodb://siteRootAdmin:password@123@172.16.100.90:31001,172.16.100.90:
32001/?replicaSet=replset_1‘
改后:'mongodb://siteRootAdmin:’.rawurlencode('password@123').'@172.16.100.90
:31001,172.16.100.90:32001/?replicaSet=replset_1‘
参考手册:http://php.net/manual/zh/mongodb-driver-manager.construct.php
2.用mogndb提供的第二个参数 以连接选项参数给传递过去
MongoDB\Driver\Manager::__construct ( string $uri [, array $options
[, array $driverOptions ]]
$option[‘username’] = $username;
$option[‘password’] = $password;
2.问题描述: php Cli模式下,多进程对数据库连接的解决办法
php fork子进程,会把主进程环境原样复制一份进行执行子进程的逻辑。在多进程下,如果其中一个
进程先退出,像mongodb这种连接实例会被释放掉。php 能够持久连接mongo 就是采用dsn连接信息
来存储mongo连接实例,一旦进程退出,连接实例等进程上的数据都会释放。
解决:在cli模式,fork子进程工作下 在连接mongo时 den连接串
尾随一个参数即可 $dsn&rand=getmypid()
3.mongo connect 问题
问题描述:php进程连接实例有故障了,需要访问完500次(php-fpm pm.max_requests设定的值 这里
设500),这个php进程退出后,才会重新连接 。这个是pconnect带来的负作用。 如果在线人数较高的时候,这500次很快就被调用完了,如果在线人数不高的时候,比如停机维护的时候,
某个db故障了,会感觉一直报错
解决:reload或者重起php-fpm
业务相关
1.问题描述:腾讯matt在IDIC布署好体验服服务后,我们用客户端进行接入,发现global去msdk.qq.com
域名下验证时,不允许访问msdk.qq.com .
注:腾讯的IDIC机房 是不允许访况 qq.com 这个域名的,在配置的时候要注意,腾讯有对应的别的
域名或ip处理
解决:找腾讯msdk接口人,提供IDIC机房访问的sdk地址,http://msdk.tencent-cloud.net/ 即可