[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/maintenance/ -> showJobs.php (source)

   1  <?php
   2  /**
   3   * Report number of jobs currently waiting in master database.
   4   *
   5   * Based on runJobs.php
   6   *
   7   * This program is free software; you can redistribute it and/or modify
   8   * it under the terms of the GNU General Public License as published by
   9   * the Free Software Foundation; either version 2 of the License, or
  10   * (at your option) any later version.
  11   *
  12   * This program is distributed in the hope that it will be useful,
  13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15   * GNU General Public License for more details.
  16   *
  17   * You should have received a copy of the GNU General Public License along
  18   * with this program; if not, write to the Free Software Foundation, Inc.,
  19   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  20   * http://www.gnu.org/copyleft/gpl.html
  21   *
  22   * @file
  23   * @ingroup Maintenance
  24   * @author Tim Starling
  25   * @author Antoine Musso
  26   */
  27  
  28  require_once  __DIR__ . '/Maintenance.php';
  29  
  30  /**
  31   * Maintenance script that reports the number of jobs currently waiting
  32   * in master database.
  33   *
  34   * @ingroup Maintenance
  35   */
  36  class ShowJobs extends Maintenance {
  37  	public function __construct() {
  38          parent::__construct();
  39          $this->mDescription = "Show number of jobs waiting in master database";
  40          $this->addOption( 'group', 'Show number of jobs per job type' );
  41          $this->addOption(
  42              'list',
  43              'Show a complete list of all jobs in a machine-readable format, instead of statistics'
  44          );
  45      }
  46  
  47  	public function execute() {
  48          $group = JobQueueGroup::singleton();
  49          if ( $this->hasOption( 'list' ) ) {
  50              foreach ( $group->getQueueTypes() as $type ) {
  51                  $queue = $group->get( $type );
  52                  foreach ( $queue->getAllQueuedJobs() as $job ) {
  53                      $this->output( $job->toString() . " status=unclaimed\n" );
  54                  }
  55                  foreach ( $queue->getAllDelayedJobs() as $job ) {
  56                      $this->output( $job->toString() . " status=delayed\n" );
  57                  }
  58              }
  59          } elseif ( $this->hasOption( 'group' ) ) {
  60              foreach ( $group->getQueueTypes() as $type ) {
  61                  $queue = $group->get( $type );
  62                  $delayed = $queue->getDelayedCount();
  63                  $pending = $queue->getSize();
  64                  $claimed = $queue->getAcquiredCount();
  65                  $abandoned = $queue->getAbandonedCount();
  66                  $active = max( 0, $claimed - $abandoned );
  67                  if ( ( $pending + $claimed + $delayed + $abandoned ) > 0 ) {
  68                      $this->output(
  69                          "{$type}: $pending queued; " .
  70                          "$claimed claimed ($active active, $abandoned abandoned); " .
  71                          "$delayed delayed\n"
  72                      );
  73                  }
  74              }
  75          } else {
  76              $count = 0;
  77              foreach ( $group->getQueueTypes() as $type ) {
  78                  $count += $group->get( $type )->getSize();
  79              }
  80              $this->output( "$count\n" );
  81          }
  82      }
  83  }
  84  
  85  $maintClass = "ShowJobs";
  86  require_once RUN_MAINTENANCE_IF_MAIN;


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