* @since 1.23
*/
public function queuesHaveJobs( $type = self::TYPE_ANY ) {
- global $wgMemc;
-
$key = wfMemcKey( 'jobqueue', 'queueshavejobs', $type );
+ $cache = ObjectCache::getLocalClusterInstance();
- $value = $wgMemc->get( $key );
+ $value = $cache->get( $key );
if ( $value === false ) {
$queues = $this->getQueuesWithJobs();
if ( $type == self::TYPE_DEFAULT ) {
$queues = array_intersect( $queues, $this->getDefaultQueueTypes() );
}
$value = count( $queues ) ? 'true' : 'false';
- $wgMemc->add( $key, $value, 15 );
+ $cache->add( $key, $value, 15 );
}
return ( $value === 'true' );
* @return mixed
*/
private function getCachedConfigVar( $name ) {
- global $wgConf, $wgMemc;
-
+ // @TODO: cleanup this whole method with a proper config system
if ( $this->wiki === wfWikiID() ) {
return $GLOBALS[$name]; // common case
} else {
- list( $db, $prefix ) = wfSplitWikiID( $this->wiki );
- $key = wfForeignMemcKey( $db, $prefix, 'configvalue', $name );
- $value = $wgMemc->get( $key ); // ('v' => ...) or false
- if ( is_array( $value ) ) {
- return $value['v'];
- } else {
- $value = $wgConf->getConfig( $this->wiki, $name );
- $wgMemc->set( $key, array( 'v' => $value ), 86400 + mt_rand( 0, 86400 ) );
-
- return $value;
- }
+ $wiki = $this->wiki;
+ $cache = ObjectCache::getMainWANInstance();
+ $value = $cache->getWithSetCallback(
+ $cache->makeGlobalKey( 'jobqueue', 'configvalue', $wiki, $name ),
+ $cache::TTL_DAY + mt_rand( 0, $cache::TTL_DAY ),
+ function () use ( $wiki, $name ) {
+ global $wgConf;
+
+ return array( 'v' => $wgConf->getConfig( $wiki, $name ) );
+ },
+ array( 'pcTTL' => 30 )
+ );
+
+ return $value['v'];
}
}
function __destruct() {
$n = count( $this->bufferedJobs );
if ( $n > 0 ) {
- trigger_error( __METHOD__ . ": $n buffered job(s) never inserted." );
+ $type = implode( ', ', array_unique( array_map( 'get_class', $this->bufferedJobs ) ) );
+ trigger_error( __METHOD__ . ": $n buffered job(s) of type(s) $type never inserted." );
}
}
}