Skip to content

Commit ab9f2b7

Browse files
committed
Use prepared statement for number of active raw sessions
1 parent 8bed52a commit ab9f2b7

1 file changed

Lines changed: 20 additions & 6 deletions

File tree

components/ILIAS/Authentication/classes/class.ilSessionStatistics.php

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ class ilSessionStatistics
2222
{
2323
private const int SLOT_SIZE = 15;
2424

25+
protected static ?ilDBStatement $number_of_active_raw_sessions_statement = null;
26+
2527
/**
2628
* Is session statistics active at all?
2729
*/
@@ -171,12 +173,8 @@ protected static function getNumberOfActiveRawSessions(int $a_time): int
171173

172174
$ilDB = $DIC['ilDB'];
173175

174-
$sql = 'SELECT COUNT(*) counter FROM usr_session_stats_raw' .
175-
' WHERE (end_time IS NULL OR end_time >= ' . $ilDB->quote($a_time, 'integer') . ')' .
176-
' AND start_time <= ' . $ilDB->quote($a_time, 'integer') .
177-
' AND ' . $ilDB->in('type', ilSessionControl::$session_types_controlled, false, 'integer');
178-
$res = $ilDB->query($sql);
179-
$row = $ilDB->fetchAssoc($res);
176+
$statement = self::getNumberOfActiveRawSessionsPreparedStatement();
177+
$row = $DIC->database()->fetchAssoc($DIC->database()->execute($statement, [$a_time, $a_time]));
180178
return (int) $row['counter'];
181179
}
182180

@@ -262,6 +260,22 @@ public static function aggretateRaw(int $a_now): void
262260
self::deleteAggregatedRaw($a_now);
263261
}
264262

263+
protected static function getNumberOfActiveRawSessionsPreparedStatement(): ilDbStatement
264+
{
265+
if (self::$number_of_active_raw_sessions_statement === null) {
266+
global $DIC;
267+
self::$number_of_active_raw_sessions_statement = $DIC->database()->prepare(
268+
'SELECT COUNT(*) counter FROM usr_session_stats_raw '
269+
. 'WHERE (end_time IS NULL OR end_time >= ?) '
270+
. 'AND start_time <= ? '
271+
. 'AND ' . $DIC->database()->in('type', ilSessionControl::$session_types_controlled, false, 'integer'),
272+
[ilDBConstants::T_INTEGER, ilDBConstants::T_INTEGER]
273+
);
274+
}
275+
276+
return self::$number_of_active_raw_sessions_statement;
277+
}
278+
265279
protected static function getAggregatedRawDataPreparedStatement(): ilDBStatement
266280
{
267281
global $DIC;

0 commit comments

Comments
 (0)