thinkphp怎样设置数据库毗连池
随着互联网应用越来越重大,关于数据库的需求也越来越高。在高并发的情形下,古板的数据库毗连方法往往无法知足需求,这时间数据库毗连池就显得尤为主要。在使用thinkphp框架举行开发时,也可以使用数据库毗连池来提高数据库的并发性能。本文将先容怎样设置数据库毗连池。
一、什么是数据库毗连池
古板数据库毗连是一种独吞资源的方法,每个毗连需要消耗系统资源,若是并发用户较多,那么就会导致系统资源的铺张和响应延迟等问题。而数据库毗连池是一种毗连共享的方法,将毗连缓存到毗连池中,多个线程可以共享统一个毗连池中的毗连,从而镌汰系统资源的消耗。
二、thinkphp怎样设置数据库毗连池
1.在应用设置文件中添加以下内容
连忙学习“PHP免费学习条记(深入)”;
return [ //数据库设置信息 'database' => [ // 数据库类型 'type' => 'mysql', // 效劳器地点 'hostname' => '127.0.0.1', // 数据库名 'database' => 'test', // 用户名 'username' => 'root', // 密码 'password' => '', // 端口 'hostport' => '', // 数据库毗连参数 'params' => [ // 数据库毗连池设置 \think\helper\Arr::except(\Swoole\Coroutine::getContext(),'__timer'), ], // 数据库编码默认接纳utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => 'think_', ], ];
登录后复制
2.在入口文件index.php中加入以下内容
use think\App; use think\facade\Config; use think\facade\Db; use think\swoole\Server; use think\swoole\websocket\socketio\Handler; use think\swoole\websocket\Websocket; use think\swoole\websocket\socketio\Packet; use think\swoole\coroutine\Context; use Swoole\Database\PDOPool; use Swoole\Coroutine\Scheduler; //界说应用目录 define('APP_PATH', __DIR__ . '/app/'); // 加载框架指导文件 require __DIR__ . '/thinkphp/vendor/autoload.php'; require __DIR__ . '/thinkphp/bootstrap.php'; // 扩展Loader注册到自动加载 \think\Loader::addNamespace('swoole', __DIR__ . '/thinkphp/library/swoole/'); // 初始化应用 App::getInstance()->initialize(); //获取数据库设置信息 $dbConfig = Config::get('database'); //建设数据库毗连池 $pool = new PDOPool($dbConfig['type'], $dbConfig); //设置毗连池的参数 $options = [ 'min' => 5, 'max' => 100, ]; $pool->setOptions($options); //毗连池单例模式 Context::set('pool', $pool); //启动Swoole server $http = (new Server())->http('0.0.0.0', 9501)->set([ 'enable_static_handler' => true, 'document_root' => '/data/wwwroot/default/public/static', 'worker_num' => 2, 'task_worker_num' => 2, 'daemonize' => false, 'pid_file' => __DIR__.'/swoole.pid' ]); $http->on('WorkerStart', function (swoole_server $server, int $worker_id) { //功效实现 }); $http->start();
登录后复制
以上代码的作用是建设了一个PDOPool毗连池,并设置最小毗连数为5,最大毗连数为100。通过Context将毗连池生涯在内存中,供扩展的thinkphp应用使用。
三、毗连池的使用要领
在使用毗连池的历程中,需要注重以下几点:
毗连池的单例模式,差别的函数使用统一个毗连池工具,包管毗连池参数的一致性。
在完成数据库操作后,不要立纵然用MySQL的关闭操作,而是直接送还给毗连池。由于现实上是将毗连放回毗连池中,而不是关闭毗连。
不要将毗连池视为一个“不死之身”,它也需要释放,释放毗连池的要领为:$pool->close()。
下面是一个使用毗连池的示例:
<?php namespace app\index\controller; use think\Controller; use Swoole\Database\PDOPool; class Index extends Controller { public function index() { //获取毗连池 $pool = \Swoole\Coroutine::getContext('pool'); //从毗连池中取出一个毗连 $connection = $pool->getConnection(); //执行操作 $result = $connection->query('SELECT * FROM `user`'); //送还毗连给毗连池 $pool->putConnection($connection); //返回效果 return json($result); } }
登录后复制
四、总结
使用数据库毗连池可以显著提高数据库的性能,并且镌汰了古板毗连的铺张资源。通过上述办法,我们可以在thinkphp框架中设置和使用数据库毗连池。虽然,使用毗连池时需要包管毗连的合理释放,以免系统资源铺张和性能下降。
以上就是thinkphp怎样设置数据库毗连池的详细内容,更多请关注本网内其它相关文章!