use MediaWiki\MediaWikiServices;
/**
- * Handles purging appropriate CDN URLs given a title (or titles)
+ * Handles purging the appropriate CDN objects given a list of URLs or Title instances
* @ingroup Cache
*/
class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate {
/** @var string[] Collection of URLs to purge */
- protected $urls = [];
+ private $urls = [];
/**
* @param string[] $urlArr Collection of URLs to purge
}
public function merge( MergeableUpdate $update ) {
- /** @var CdnCacheUpdate $update */
+ /** @var self $update */
Assert::parameterType( __CLASS__, $update, '$update' );
+ '@phan-var self $update';
$this->urls = array_merge( $this->urls, $update->urls );
}
wfDebugLog( 'squid', __METHOD__ . ': ' . implode( ' ', $urlArr ) );
// Reliably broadcast the purge to all edge nodes
- $relayer = MediaWikiServices::getInstance()->getEventRelayerGroup()
- ->getRelayer( 'cdn-url-purges' );
$ts = microtime( true );
- $relayer->notifyMulti(
+ $relayerGroup = MediaWikiServices::getInstance()->getEventRelayerGroup();
+ $relayerGroup->getRelayer( 'cdn-url-purges' )->notifyMulti(
'cdn-url-purges',
array_map(
function ( $url ) use ( $ts ) {
foreach ( $chunks as $chunk ) {
$client = new SquidPurgeClient( $server );
foreach ( $chunk as $url ) {
- $client->queuePurge( $url );
+ $client->queuePurge( self::expand( $url ) );
}
$pool->addClient( $client );
}
* @param string $url
* @return string
*/
- public static function expand( $url ) {
+ private static function expand( $url ) {
return wfExpandUrl( $url, PROTO_INTERNAL );
}