MediaWiki  master
RedisPubSubFeedEngine.php
Go to the documentation of this file.
1 <?php
41 
48  public function send( array $feed, $line ) {
49  $parsed = wfParseUrl( $feed['uri'] );
50  $server = $parsed['host'];
51  $options = [ 'serializer' => 'none' ];
52  $channel = 'rc';
53 
54  if ( isset( $parsed['port'] ) ) {
55  $server .= ":{$parsed['port']}";
56  }
57  if ( isset( $parsed['query'] ) ) {
58  parse_str( $parsed['query'], $options );
59  }
60  if ( isset( $parsed['pass'] ) ) {
61  $options['password'] = $parsed['pass'];
62  }
63  if ( isset( $parsed['path'] ) ) {
64  $channel = str_replace( '/', '.', ltrim( $parsed['path'], '/' ) );
65  }
66  $pool = RedisConnectionPool::singleton( $options );
67  $conn = $pool->getConnection( $server );
68  if ( $conn !== false ) {
69  $conn->publish( $channel, $line );
70  return true;
71  }
72 
73  return false;
74  }
75 }
send(array $feed, $line)
wfParseUrl( $url)
parse_url() work-alike, but non-broken.
static singleton(array $options)
Send recent change notifications via Redis Pub/Sub.
$line
Definition: cdb.php:59
Base class for RC feed engines that send messages in a freely configurable format to a uri-addressed ...