[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/deferred/ -> HTMLCacheUpdate.php (source)

   1  <?php
   2  /**
   3   * HTML cache invalidation of all pages linking to a given title.
   4   *
   5   * This program is free software; you can redistribute it and/or modify
   6   * it under the terms of the GNU General Public License as published by
   7   * the Free Software Foundation; either version 2 of the License, or
   8   * (at your option) any later version.
   9   *
  10   * This program is distributed in the hope that it will be useful,
  11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13   * GNU General Public License for more details.
  14   *
  15   * You should have received a copy of the GNU General Public License along
  16   * with this program; if not, write to the Free Software Foundation, Inc.,
  17   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18   * http://www.gnu.org/copyleft/gpl.html
  19   *
  20   * @file
  21   * @ingroup Cache
  22   */
  23  
  24  /**
  25   * Class to invalidate the HTML cache of all the pages linking to a given title.
  26   *
  27   * @ingroup Cache
  28   */
  29  class HTMLCacheUpdate implements DeferrableUpdate {
  30      /** @var Title */
  31      public $mTitle;
  32  
  33      /** @var string */
  34      public $mTable;
  35  
  36      /**
  37       * @param Title $titleTo
  38       * @param string $table
  39       */
  40  	function __construct( Title $titleTo, $table ) {
  41          $this->mTitle = $titleTo;
  42          $this->mTable = $table;
  43      }
  44  
  45  	public function doUpdate() {
  46          wfProfileIn( __METHOD__ );
  47  
  48          $job = new HTMLCacheUpdateJob(
  49              $this->mTitle,
  50              array(
  51                  'table' => $this->mTable,
  52              ) + Job::newRootJobParams( // "overall" refresh links job info
  53                  "htmlCacheUpdate:{$this->mTable}:{$this->mTitle->getPrefixedText()}"
  54              )
  55          );
  56  
  57          $count = $this->mTitle->getBacklinkCache()->getNumLinks( $this->mTable, 100 );
  58          if ( $count >= 100 ) { // many backlinks
  59              JobQueueGroup::singleton()->push( $job );
  60              JobQueueGroup::singleton()->deduplicateRootJob( $job );
  61          } else { // few backlinks ($count might be off even if 0)
  62              $dbw = wfGetDB( DB_MASTER );
  63              $dbw->onTransactionIdle( function () use ( $job ) {
  64                  $job->run(); // just do the purge query now
  65              } );
  66          }
  67  
  68          wfProfileOut( __METHOD__ );
  69      }
  70  }


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