DbPool.php
1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
namespace Lib;
use Swoole\Database\PDOConfig;
use Swoole\Database\PDOPool;
/**
* db 池
* @author:dc
* @time 2023/2/13 15:03
* Class DbPool
* @package Lib
*/
class DbPool {
use DbQuery;
/**
* @var \Swoole\Database\PDOPool
*/
static $pool = null;
/**
* 实例
* DbPool constructor.
*/
public function __construct()
{
if(!static::$pool){
$pdoconfig = (new PDOConfig)
->withHost(DB_HOST)
->withPort(DB_PORT)
->withDbName(DB_DATABASE)
->withCharset('utf8mb4')
->withUsername(DB_USER)
->withPassword(DB_PASSWORD)
->withOptions([
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'",
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
]);
static::$pool = new PDOPool($pdoconfig,1024);
}
// 获取链接
$this->client = static::$pool->get();
}
/**
* 结束
*/
public function __destruct(){
$this->close();
}
/**
* 关闭链接
* @author:dc
* @time 2024/5/30 10:30
*/
public function close(){
self::$pool->put($this->client);
$this->client = null;
}
}