一直认为在高并发情况下相对于java,php没有数据库长连接是很吃亏的。直到我翻php.net看到了数据库长连接和连接与连接管理。
废话不多说先上教程:
本文使用tp5+php7.1,需要更改think\library\think\Connection.php给
protected $params = [ PDO::ATTR_CASE => PDO::CASE_NATURAL, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, PDO::ATTR_STRINGIFY_FETCHES => false, PDO::ATTR_EMULATE_PREPARES => false, ];
添加一个属性
PDO::ATTR_PERSISTENT => true
即可。值得注意的是,fpm进程管理模式必须是static(同时要配置合适的连接数,建议自己花点时间慢慢试试)。压力测试结果表明整体性能提升30%。