Limit squid purging
authorTim Starling <tstarling@users.mediawiki.org>
Wed, 30 Jun 2004 03:39:48 +0000 (03:39 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Wed, 30 Jun 2004 03:39:48 +0000 (03:39 +0000)
includes/DefaultSettings.php
includes/SquidUpdate.php

index e57244c..f982827 100644 (file)
@@ -218,6 +218,10 @@ $wgCookieExpiration = 2592000;
 # don't specify ports here (80 is default)
 # $wgSquidServers = array('127.0.0.1');
 
+# Maximum number of titles to purge in any one client operation
+$wgMaxSquidPurgeTitles = 400;
+
+
 # Set to set an explicit domain on the login cookies
 # eg, "justthis.domain.org" or ".any.subdomain.net"
 $wgCookieDomain = '';
index bb90029..7d5a3ef 100644 (file)
@@ -2,9 +2,18 @@
 # See deferred.doc
 
 class SquidUpdate {
-       var $urlArr;
+       var $urlArr, $mMaxTitles;
 
-       function SquidUpdate( $urlArr = Array() ) {
+       function SquidUpdate( $urlArr = Array(), $maxTitles = false ) {
+               global $wgMaxSquidPurgeTitles;
+               if ( $maxTitles === false ) {
+                       $this->mMaxTitles = $wgMaxSquidPurgeTitles;
+               } else {
+                       $this->mMaxTitles = $maxTitles;
+               }
+               if ( count( $urlArr ) > $this->mMaxTitles ) {
+                       $urlArr = array_slice( $urlArr, 0, $this->mMaxTitles );
+               }
                $this->urlArr = $urlArr;
        }
 
@@ -14,10 +23,12 @@ class SquidUpdate {
                $sql = "SELECT cur_namespace,cur_title FROM links,cur WHERE l_to={$id} and l_from=cur_id" ;
                $res = wfQuery ( $sql, DB_READ ) ;
                $blurlArr = $title->getSquidURLs();
-               while ( $BL = wfFetchObject ( $res ) )
-               {
-                       $tobj = Title::makeTitle( $BL->cur_namespace, $BL->cur_title ) ; 
-                       $blurlArr[] = $tobj->getInternalURL();
+               if ( wfNumRows( $res ) <= $this->mMaxTitles ) {
+                       while ( $BL = wfFetchObject ( $res ) )
+                       {
+                               $tobj = Title::makeTitle( $BL->cur_namespace, $BL->cur_title ) ; 
+                               $blurlArr[] = $tobj->getInternalURL();
+                       }
                }
                wfFreeResult ( $res ) ;
                return new SquidUpdate( $blurlArr );
@@ -29,10 +40,12 @@ class SquidUpdate {
                $sql = "SELECT cur_namespace,cur_title FROM brokenlinks,cur WHERE bl_to={$encTitle} AND bl_from=cur_id";
                $res = wfQuery( $sql, DB_READ );
                $blurlArr = array();
-               while ( $BL = wfFetchObject( $res ) )
-               {
-                       $tobj = Title::makeTitle( $BL->cur_namespace, $BL->cur_title );
-                       $blurlArr[] = $tobj->getInternalURL();
+               if ( wfNumRows( $res ) <= $this->mMaxTitles ) {
+                       while ( $BL = wfFetchObject( $res ) )
+                       {
+                               $tobj = Title::makeTitle( $BL->cur_namespace, $BL->cur_title );
+                               $blurlArr[] = $tobj->getInternalURL();
+                       }
                }
                wfFreeResult( $res );
                return new SquidUpdate( $blurlArr );