回答編集履歴

3

追記

2018/08/03 19:25

投稿

退会済みユーザー
test CHANGED
@@ -5,3 +5,177 @@
5
5
 
6
6
 
7
7
  `microtime()` で処理時間の計測を行って、ログを書き出す処理を書いたことはあります。
8
+
9
+
10
+
11
+ ### Sample
12
+
13
+
14
+
15
+ ```php
16
+
17
+ <?php
18
+
19
+
20
+
21
+ /**
22
+
23
+ * DB.class.php
24
+
25
+ */
26
+
27
+ class DB
28
+
29
+ {
30
+
31
+
32
+
33
+ const DB_NAME = 'sample';
34
+
35
+ const DB_USER = 'root';
36
+
37
+ const DB_PASSWORD = 'password';
38
+
39
+
40
+
41
+ /**
42
+
43
+ * @var PDO
44
+
45
+ */
46
+
47
+ private static $pdo = null;
48
+
49
+
50
+
51
+ /**
52
+
53
+ * @var PDOStatement
54
+
55
+ */
56
+
57
+ private static $stmt = null;
58
+
59
+
60
+
61
+ /**
62
+
63
+ * getInstance
64
+
65
+ * @return \PDO
66
+
67
+ */
68
+
69
+ public static function getInstance(): \PDO
70
+
71
+ {
72
+
73
+ if (!is_null(static::$pdo)) {
74
+
75
+ return static::$pdo;
76
+
77
+ }
78
+
79
+ $dsn = sprintf('mysql:host=127.0.0.1;dbname=%s;charset=utf8mb4', self::DB_NAME);
80
+
81
+ $pdo = new \PDO($dsn, self::DB_USER, self::DB_PASSWORD);
82
+
83
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
84
+
85
+ $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
86
+
87
+ static::$pdo = $pdo;
88
+
89
+ return static::$pdo;
90
+
91
+ }
92
+
93
+
94
+
95
+ /**
96
+
97
+ * select
98
+
99
+ * @param string $sql
100
+
101
+ * @param array $params
102
+
103
+ * @return null|array
104
+
105
+ */
106
+
107
+ public static function select(string $sql, array $params = [])
108
+
109
+ {
110
+
111
+ $pdo = self::getInstance();
112
+
113
+ self::$stmt = $pdo->prepare($sql);
114
+
115
+
116
+
117
+ // start time
118
+
119
+ $start = microtime(true);
120
+
121
+
122
+
123
+ self::$stmt->execute($params);
124
+
125
+
126
+
127
+ // end time
128
+
129
+ $end = microtime(true);
130
+
131
+ $time = $end - $start;
132
+
133
+
134
+
135
+ if ($time > 1) {
136
+
137
+ return null;
138
+
139
+ }
140
+
141
+ return self::$stmt->fetchAll();
142
+
143
+ }
144
+
145
+
146
+
147
+ }
148
+
149
+ ```
150
+
151
+
152
+
153
+ ```php
154
+
155
+ <?php
156
+
157
+
158
+
159
+ /**
160
+
161
+ * index.php
162
+
163
+ */
164
+
165
+ ini_set('display_errors', true);
166
+
167
+ error_reporting(E_ALL);
168
+
169
+
170
+
171
+ require 'classes/DB.class.php';
172
+
173
+
174
+
175
+ $rows_table1 = DB::select('select * from Table1');
176
+
177
+ $rows_table2 = DB::select('select * from Table2');
178
+
179
+ $rows_table3 = DB::select('select * from Table3');
180
+
181
+ ```

2

追記

2018/08/03 19:25

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,7 @@
1
- [PDO::setAttribute](http://php.net/manual/ja/pdo.setattribute.php) で `PDO::ATTR_TIMEOUT` を設定する。
1
+ [PDO::setAttribute](http://php.net/manual/ja/pdo.setattribute.php) で `PDO::ATTR_TIMEOUT` を設定する。または、[mysqli::options](http://php.net/manual/ja/mysqli.options.php)で`MYSQLI_OPT_CONNECT_TIMEOUT` を設定する。
2
2
 
3
3
  という方法を検索で見つけたけど、使ったことはありません。
4
+
5
+
6
+
7
+ `microtime()` で処理時間の計測を行って、ログを書き出す処理を書いたことはあります。

1

追記

2018/08/03 10:12

投稿

退会済みユーザー
test CHANGED
File without changes