<?php
/**
* See deferred.txt
+ * @file
+ * @ingroup Cache
*/
/**
- *
+ * Handles purging appropriate Squid URLs given a title (or titles)
+ * @ingroup Cache
*/
class SquidUpdate {
var $urlArr, $mMaxTitles;
return new SquidUpdate( $blurlArr );
}
- static function newFromTitles( &$titles, $urlArr = array() ) {
+ /**
+ * Create a SquidUpdate from an array of Title objects, or a TitleArray object
+ */
+ static function newFromTitles( $titles, $urlArr = array() ) {
global $wgMaxSquidPurgeTitles;
- if ( count( $titles ) > $wgMaxSquidPurgeTitles ) {
- $titles = array_slice( $titles, 0, $wgMaxSquidPurgeTitles );
- }
+ $i = 0;
foreach ( $titles as $title ) {
$urlArr[] = $title->getInternalURL();
+ if ( $i++ > $wgMaxSquidPurgeTitles ) {
+ break;
+ }
}
return new SquidUpdate( $urlArr );
}
echo implode("<br />\n", $urlArr) . "<br />\n";
return;
}*/
-
+
if( empty( $urlArr ) ) {
return;
}
/* open the remaining sockets for this server */
list($server, $port) = explode(':', $wgSquidServers[$ss]);
if(!isset($port)) $port = 80;
- $sockets[$so+1] = @fsockopen($server, $port, $error, $errstr, 2);
- @stream_set_blocking($sockets[$so+1],false);
+ $socket = @fsockopen($server, $port, $error, $errstr, 2);
+ @stream_set_blocking($socket,false);
+ $sockets[] = $socket;
}
$so++;
}
foreach ( $urlArr as $url ) {
if( !is_string( $url ) ) {
- wfDebugDieBacktrace( 'Bad purge URL' );
+ throw new MWException( 'Bad purge URL' );
}
$url = SquidUpdate::expand( $url );
-
+
// Construct a minimal HTCP request diagram
// as per RFC 2756
// Opcode 'CLR', no response desired, no auth
wfDebug( $text );
}
}
-
+
/**
* Expand local URLs to fully-qualified URLs using the internal protocol
* and host defined in $wgInternalServer. Input that's already fully-
return $url;
}
}
-