[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/maintenance/ -> purgeParserCache.php (source)

   1  <?php
   2  /**
   3   * Remove old objects from the parser cache.
   4   * This only works when the parser cache is in an SQL database.
   5   *
   6   * This program is free software; you can redistribute it and/or modify
   7   * it under the terms of the GNU General Public License as published by
   8   * the Free Software Foundation; either version 2 of the License, or
   9   * (at your option) any later version.
  10   *
  11   * This program is distributed in the hope that it will be useful,
  12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14   * GNU General Public License for more details.
  15   *
  16   * You should have received a copy of the GNU General Public License along
  17   * with this program; if not, write to the Free Software Foundation, Inc.,
  18   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19   * http://www.gnu.org/copyleft/gpl.html
  20   *
  21   * @file
  22   * @ingroup Maintenance
  23   */
  24  
  25  require  __DIR__ . '/Maintenance.php';
  26  
  27  /**
  28   * Maintenance script to remove old objects from the parser cache.
  29   *
  30   * @ingroup Maintenance
  31   */
  32  class PurgeParserCache extends Maintenance {
  33      public $lastProgress;
  34  
  35  	function __construct() {
  36          parent::__construct();
  37          $this->addDescription( "Remove old objects from the parser cache. " .
  38              "This only works when the parser cache is in an SQL database." );
  39          $this->addOption( 'expiredate', 'Delete objects expiring before this date.', false, true );
  40          $this->addOption(
  41              'age',
  42              'Delete objects created more than this many seconds ago, assuming $wgParserCacheExpireTime ' .
  43                  'has been consistent.',
  44              false, true );
  45      }
  46  
  47  	function execute() {
  48          $inputDate = $this->getOption( 'expiredate' );
  49          $inputAge = $this->getOption( 'age' );
  50          if ( $inputDate !== null ) {
  51              $date = wfTimestamp( TS_MW, strtotime( $inputDate ) );
  52          } elseif ( $inputAge !== null ) {
  53              global $wgParserCacheExpireTime;
  54              $date = wfTimestamp( TS_MW, time() + $wgParserCacheExpireTime - intval( $inputAge ) );
  55          } else {
  56              $this->error( "Must specify either --expiredate or --age", 1 );
  57          }
  58  
  59          $english = Language::factory( 'en' );
  60          $this->output( "Deleting objects expiring before " . $english->timeanddate( $date ) . "\n" );
  61  
  62          $pc = wfGetParserCacheStorage();
  63          $success = $pc->deleteObjectsExpiringBefore( $date, array( $this, 'showProgress' ) );
  64          if ( !$success ) {
  65              $this->error( "\nCannot purge this kind of parser cache.", 1 );
  66          }
  67          $this->showProgress( 100 );
  68          $this->output( "\nDone\n" );
  69      }
  70  
  71  	function showProgress( $percent ) {
  72          $percentString = sprintf( "%.2f", $percent );
  73          if ( $percentString === $this->lastProgress ) {
  74              return;
  75          }
  76          $this->lastProgress = $percentString;
  77  
  78          $stars = floor( $percent / 2 );
  79          $this->output( '[' . str_repeat( '*', $stars ) . str_repeat( '.', 50 - $stars ) . '] ' .
  80              "$percentString%\r" );
  81      }
  82  }
  83  
  84  $maintClass = 'PurgeParserCache';
  85  require_once RUN_MAINTENANCE_IF_MAIN;


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1