/**
* Create an update object from an array of Title objects, or a TitleArray object
*
- * @param Traversable|array $titles
+ * @param Traversable|Title[] $titles
* @param string[] $urlArr
* @return CdnCacheUpdate
*/
public static function newFromTitles( $titles, $urlArr = [] ) {
+ ( new LinkBatch( $titles ) )->execute();
/** @var Title $title */
foreach ( $titles as $title ) {
$urlArr = array_merge( $urlArr, $title->getCdnUrls() );
/**
* @param Title $title
* @return CdnCacheUpdate
- * @deprecated 1.27
+ * @deprecated since 1.27
*/
public static function newSimplePurge( Title $title ) {
return new CdnCacheUpdate( $title->getCdnUrls() );
// Reliably broadcast the purge to all edge nodes
$relayer = MediaWikiServices::getInstance()->getEventRelayerGroup()
->getRelayer( 'cdn-url-purges' );
- $relayer->notify(
+ $ts = microtime( true );
+ $relayer->notifyMulti(
'cdn-url-purges',
- [
- 'urls' => array_values( $urlArr ), // JSON array
- 'timestamp' => microtime( true )
- ]
+ array_map(
+ function ( $url ) use ( $ts ) {
+ return [
+ 'url' => $url,
+ 'timestamp' => $ts,
+ ];
+ },
+ $urlArr
+ )
);
// Send lossy UDP broadcasting if enabled