X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fdeferred%2FCdnCacheUpdate.php;h=32f6adc6420ea53a6e18396f61eb6924c40fd4b3;hb=f0a28890a000b2c3259438a6b733ed46749c6e2a;hp=9f7d8caec78e42fbad93c5efca1fbe4cb33fbd84;hpb=466962bd4bf8c8b649eb168b3d8afe189c5b42bf;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/deferred/CdnCacheUpdate.php b/includes/deferred/CdnCacheUpdate.php index 9f7d8caec7..32f6adc642 100644 --- a/includes/deferred/CdnCacheUpdate.php +++ b/includes/deferred/CdnCacheUpdate.php @@ -29,7 +29,7 @@ use Wikimedia\Assert\Assert; */ class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate { /** @var string[] Collection of URLs to purge */ - protected $urls = array(); + protected $urls = []; /** * @param string[] $urlArr Collection of URLs to purge @@ -52,7 +52,7 @@ class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate { * @param string[] $urlArr * @return CdnCacheUpdate */ - public static function newFromTitles( $titles, $urlArr = array() ) { + public static function newFromTitles( $titles, $urlArr = [] ) { /** @var Title $title */ foreach ( $titles as $title ) { $urlArr = array_merge( $urlArr, $title->getCdnUrls() ); @@ -81,10 +81,10 @@ class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate { if ( $wgCdnReboundPurgeDelay > 0 ) { JobQueueGroup::singleton()->lazyPush( new CdnPurgeJob( Title::makeTitle( NS_SPECIAL, 'Badtitle/' . __CLASS__ ), - array( + [ 'urls' => $this->urls, 'jobReleaseTimestamp' => time() + $wgCdnReboundPurgeDelay - ) + ] ) ); } } @@ -108,10 +108,22 @@ class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate { wfDebugLog( 'squid', __METHOD__ . ': ' . implode( ' ', $urlArr ) ); + // Reliably broadcast the purge to all edge nodes + $relayer = EventRelayerGroup::singleton()->getRelayer( 'cdn-url-purges' ); + $relayer->notify( + 'cdn-url-purges', + [ + 'urls' => array_values( $urlArr ), // JSON array + 'timestamp' => microtime( true ) + ] + ); + + // Send lossy UDP broadcasting if enabled if ( $wgHTCPRouting ) { self::HTCPPurge( $urlArr ); } + // Do direct server purges if enabled (this does not scale very well) if ( $wgSquidServers ) { // Maximum number of parallel connections per squid $maxSocketsPerSquid = 8; @@ -195,7 +207,7 @@ class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate { if ( isset( $conf['host'] ) && isset( $conf['port'] ) ) { // Normalize single entries - $conf = array( $conf ); + $conf = [ $conf ]; } foreach ( $conf as $subconf ) { if ( !isset( $subconf['host'] ) || !isset( $subconf['port'] ) ) {