@@ -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