00001 <?php
00002
00003 $optionsWithArgs = array( 'fake-job' );
00004
00005 require( dirname(__FILE__).'/../commandLine.inc' );
00006 require( dirname(__FILE__).'/gearman.inc' );
00007
00008 if ( !$args ) {
00009 $args = array( 'localhost' );
00010 }
00011 $client = new Net_Gearman_Client( $args );
00012 $batchSize = 1000;
00013
00014 $dbr = wfGetDB( DB_SLAVE );
00015 $startId = 0;
00016 $endId = $dbr->selectField( 'page', 'MAX(page_id)', false, __METHOD__ );
00017 while ( true ) {
00018 $res = $dbr->select(
00019 'page',
00020 array( 'page_namespace', 'page_title', 'page_id' ),
00021 array( 'page_id > ' . intval( $startId ) ),
00022 __METHOD__,
00023 array( 'LIMIT' => $batchSize )
00024 );
00025
00026 if ( $res->numRows() == 0 ) {
00027 break;
00028 }
00029 $set = new Net_Gearman_Set;
00030 foreach ( $res as $row ) {
00031 $startId = $row->page_id;
00032 $title = Title::makeTitle( $row->page_namespace, $row->page_title );
00033 $params = array(
00034 'wiki' => wfWikiID(),
00035 'title' => $title->getPrefixedDBkey(),
00036 'command' => 'refreshLinks',
00037 'params' => false,
00038 );
00039 $task = new Net_Gearman_Task( 'mw_job', $params );
00040 $set->addTask( $task );
00041 }
00042 $client->runSet( $set );
00043 print "$startId / $endId\n";
00044 }
00045