Movatterモバイル変換


[0]ホーム

URL:


MediaWiki master
PurgeJobUtils.php
Go to the documentation of this file.
1<?php
21namespaceMediaWiki\JobQueue\Utils;
22
23useMediaWiki\Deferred\AutoCommitUpdate;
24useMediaWiki\Deferred\DeferredUpdates;
25useMediaWiki\MainConfigNames;
26useMediaWiki\MediaWikiServices;
27useWikimedia\Rdbms\IDatabase;
28
36classPurgeJobUtils {
45publicstaticfunctioninvalidatePages(IDatabase $dbw, $namespace, array $dbkeys ) {
46if ( $dbkeys === [] ) {
47return;
48 }
49 $fname = __METHOD__;
50
51 DeferredUpdates::addUpdate(newAutoCommitUpdate(
52 $dbw,
53 __METHOD__,
54staticfunction () use ( $dbw, $namespace, $dbkeys, $fname ) {
56 $dbProvider = $services->getConnectionProvider();
57// Determine which pages need to be updated.
58// This is necessary to prevent the job queue from smashing the DB with
59// large numbers of concurrent invalidations of the same page.
60 $now = $dbw->timestamp();
61 $ids = $dbw->newSelectQueryBuilder()
62 ->select('page_id' )
63 ->from('page' )
64 ->where( ['page_namespace' => $namespace ] )
65 ->andWhere( ['page_title' => $dbkeys ] )
66 ->andWhere( $dbw->expr('page_touched','<', $now ) )
67 ->caller( $fname )->fetchFieldValues();
68
69if ( !$ids ) {
70return;
71 }
72
73 $batchSize =
74 $services->getMainConfig()->get(MainConfigNames::UpdateRowsPerQuery );
75 $ticket = $dbProvider->getEmptyTransactionTicket( $fname );
76 $idBatches = array_chunk( $ids, $batchSize );
77foreach ( $idBatches as $idBatch ) {
79 ->update('page' )
80 ->set( ['page_touched' => $now ] )
81 ->where( ['page_id' => $idBatch ] )
82 ->andWhere( $dbw->expr('page_touched','<', $now ) )// handle races
83 ->caller( $fname )->execute();
84if ( count( $idBatches ) > 1 ) {
85 $dbProvider->commitAndWaitForReplication( $fname, $ticket );
86 }
87 }
88 }
89 ) );
90 }
91}
92
94class_alias( PurgeJobUtils::class,'PurgeJobUtils' );
MediaWiki\Deferred\AutoCommitUpdate
Deferrable Update for closure/callback updates that should use auto-commit mode.
DefinitionAutoCommitUpdate.php:11
MediaWiki\Deferred\DeferredUpdates
Defer callable updates to run later in the PHP process.
DefinitionDeferredUpdates.php:99
MediaWiki\JobQueue\Utils\PurgeJobUtils
Helper for a Job that writes data derived from page content to the database.
DefinitionPurgeJobUtils.php:36
MediaWiki\JobQueue\Utils\PurgeJobUtils\invalidatePages
static invalidatePages(IDatabase $dbw, $namespace, array $dbkeys)
Invalidate the cache of a list of pages from a single namespace.
DefinitionPurgeJobUtils.php:45
MediaWiki\MainConfigNames
A class containing constants representing the names of configuration variables.
DefinitionMainConfigNames.php:22
MediaWiki\MainConfigNames\UpdateRowsPerQuery
const UpdateRowsPerQuery
Name constant for the UpdateRowsPerQuery setting, for use with Config::get()
DefinitionMainConfigNames.php:4390
MediaWiki\MediaWikiServices
Service locator for MediaWiki core services.
DefinitionMediaWikiServices.php:250
MediaWiki\MediaWikiServices\getInstance
static getInstance()
Returns the global default instance of the top level service locator.
DefinitionMediaWikiServices.php:338
Wikimedia\Rdbms\IDatabase
Interface to a relational database.
DefinitionIDatabase.php:45
Wikimedia\Rdbms\IDatabase\newUpdateQueryBuilder
newUpdateQueryBuilder()
Get an UpdateQueryBuilder bound to this connection.
Wikimedia\Rdbms\IReadableDatabase\newSelectQueryBuilder
newSelectQueryBuilder()
Create an empty SelectQueryBuilder which can be used to run queries against this connection.
Wikimedia\Rdbms\IReadableDatabase\expr
expr(string $field, string $op, $value)
See Expression::__construct()
Wikimedia\Rdbms\Platform\ISQLPlatform\timestamp
timestamp( $ts=0)
Convert a timestamp in one of the formats accepted by ConvertibleTimestamp to the format used for ins...
MediaWiki\JobQueue\Utils
DefinitionBacklinkJobUtils.php:21

[8]ページ先頭

©2009-2025 Movatter.jp