Browse Source

Fix issue with APCu using the same space between two portals - now prefixed by main database name and access_url ID

Yannick Warnier 8 years ago
parent
commit
363e628e37
3 changed files with 18 additions and 9 deletions
  1. 12 6
      main/inc/lib/banner.lib.php
  2. 3 1
      main/inc/lib/message.lib.php
  3. 3 2
      main/inc/lib/tracking.lib.php

+ 12 - 6
main/inc/lib/banner.lib.php

@@ -731,11 +731,14 @@ function getOnlineUsersCount($cacheEnabled = false)
 {
     $number = 0;
     if ($cacheEnabled) {
-        if (apcu_exists('my_campus_whoisonline_count_simple')) {
-            $number = apcu_fetch('my_campus_whoisonline_count_simple');
+        global $_configuration;
+        $cachePrefix = $_configuration['main_database'].'_'.$_configuration['access_url'].'_';
+        $apcVar = $cachePrefix.'my_campus_whoisonline_count_simple';
+        if (apcu_exists($apcVar)) {
+            $number = apcu_fetch($apcVar);
         } else {
             $number = who_is_online_count(api_get_setting('time_limit_whosonline'));
-            apcu_store('my_campus_whoisonline_count_simple', $number, 15);
+            apcu_store($apcVar, $number, 15);
         }
     } else {
         $number = who_is_online_count(api_get_setting('time_limit_whosonline'));
@@ -755,9 +758,12 @@ function getOnlineUsersInCourseCount($userId, $_course, $cacheEnabled = false)
     $numberOnlineInCourse = 0;
     if (!empty($_course['id'])) {
         if ($cacheEnabled) {
+            global $_configuration;
+            $cachePrefix = $_configuration['main_database'].'_'.$_configuration['access_url'].'_';
+            $apcVar = $cachePrefix.'my_campus_whoisonline_count_simple_'.$_course['id'];
             $apc = apcu_cache_info(true);
-            if (apcu_exists('my_campus_whoisonline_count_simple_'.$_course['id'])) {
-                $numberOnlineInCourse = apcu_fetch('my_campus_whoisonline_count_simple_'.$_course['id']);
+            if (apcu_exists($apcVar)) {
+                $numberOnlineInCourse = apcu_fetch($apcVar);
             } else {
                 $numberOnlineInCourse = who_is_online_in_this_course_count(
                     $userId,
@@ -765,7 +771,7 @@ function getOnlineUsersInCourseCount($userId, $_course, $cacheEnabled = false)
                     $_course['id']
                 );
                 apcu_store(
-                    'my_campus_whoisonline_count_simple_'.$_course['id'],
+                    $apcVar,
                     $numberOnlineInCourse,
                     15
                 );

+ 3 - 1
main/inc/lib/message.lib.php

@@ -29,7 +29,9 @@ class MessageManager
         if (!isset($count)) {
             $cacheEnabled = function_exists('apcu_exists');
             if ($cacheEnabled) {
-                $var = 'social_messages_unread_u_'.$userId;
+                global $_configuration;
+                $cachePrefix = $_configuration['main_database'].'_'.$_configuration['access_url'].'_';
+                $var = $cachePrefix.'social_messages_unread_u_'.$userId;
                 if (apcu_exists($var)) {
                     $count = apcu_fetch($var);
                 } else {

+ 3 - 2
main/inc/lib/tracking.lib.php

@@ -1692,8 +1692,9 @@ class Tracking
         if ($cacheEnabled) {
             $apc = apcu_cache_info(true);
             $apc_end = $apc['start_time'] + $apc['ttl'];
-
-            $apc_var = 'course_access_'.$courseId.'_'.$session_id.'_'.strtotime($roundedStart).'_'.strtotime($roundedStop);
+            global $_configuration;
+            $cachePrefix = $_configuration['main_database'].'_'.$_configuration['access_url'].'_';
+            $apc_var = $cachePrefix.'course_access_'.$courseId.'_'.$session_id.'_'.strtotime($roundedStart).'_'.strtotime($roundedStop);
             if (apcu_exists($apc_var) && (time() < $apc_end) &&
                 apcu_fetch($apc_var) > 0
             ) {