ThinkPHP5 MySQL too many connections

ThinkPHP5在使用中,特别是执行耗时比较长的任务时,可能会出现`too many connections`的情况,就是连接数过多。

一方面,可能是程序上的问题,另一方面,这是数据库配置上的问题。

解决办法,修改 `application/database.php`, `params`参数默认为

ThinkPHP5数据库操作

ThinkPHP5中数据库在`database.php`中配置,需要数据库操作时自己完成连接,也可以在`Db::connect()`中动态地传入字符串或数组类型的数据库连接信息。

Db类

`Db`类使用前需先声明引用 `use think\Db;`

PHP站点被攻击时处理方案

攻击模式处理方案。

方案(阿里云)

1. MySQL RDS添加只读实例,开启读写分离,平时可预留低配实例备用
2. MySQL数据库配置 wait_timeout和 interactive_timeout为 5~10,以便超时自动释放连接,避免连接数过多的问题
3. WAF CC自定义规则,设置单ip规定时长的访问限制及封禁时长,可设置2~3个阶段
4. WAF精准控制规,主要是黑白名单

PHP SESSION心得

PHP SESSION心得:

1. 单台服务器时,`session.save_handler`用`files`,不要用`memcache`,不然 `session_start` 会有1%左右的机率出现严重耗时的情况。Redis未测试,应该也没有files快。

2. 多台服务器时,session可以存储在Memcache/Redis/Mysql中

3. 并发高时,应降低session回收机率,即配置 `session.gc_divisor`

4. 在PHP环境下,默认的 `session.lazy_write = On`无需禁用。不然也会出现1中的问题。

豫ICP备19001387号-1