]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Add $config['sessions']['gc_limit'] to limit how much work we do in each session...
authorBrion Vibber <brion@pobox.com>
Thu, 27 Jan 2011 20:07:29 +0000 (12:07 -0800)
committerBrion Vibber <brion@pobox.com>
Thu, 27 Jan 2011 20:08:24 +0000 (12:08 -0800)
classes/Session.php
lib/default.php

index e1c83ad4dc78564b7745d06d56cba9a087635981..166b89815a85bd42cee95381cc8b7f5484f16633 100644 (file)
@@ -156,6 +156,13 @@ class Session extends Memcached_DataObject
         $session->selectAdd();
         $session->selectAdd('id');
 
+        $limit = common_config('sessions', 'gc_limit');
+        if ($limit > 0) {
+            // On large sites, too many sessions to expire
+            // at once will just result in failure.
+            $session->limit($limit);
+        }
+
         $session->find();
 
         while ($session->fetch()) {
index 85d27f5220b2c28722dcfcd7678fdd7041c214b4..4b28e3238ba209c20a701fc6791633d180f54725 100644 (file)
@@ -261,8 +261,9 @@ $default =
         'search' =>
         array('type' => 'fulltext'),
         'sessions' =>
-        array('handle' => false, // whether to handle sessions ourselves
-              'debug' => false), // debugging output for sessions
+        array('handle' => false,   // whether to handle sessions ourselves
+              'debug' => false,    // debugging output for sessions
+              'gc_limit' => 1000), // max sessions to expire at a time
         'design' =>
         array('backgroundcolor' => null, // null -> 'use theme default'
               'contentcolor' => null,