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