MediaWiki 1.41.2
PoolWorkArticleView.php
Go to the documentation of this file.
1<?php
21use MediaWiki\Logger\Spi as LoggerSpi;
25
36 protected $parserOptions;
38 protected $revision;
40 private $renderer;
42 protected $loggerSpi;
43
51 public function __construct(
52 string $workKey,
53 RevisionRecord $revision,
54 ParserOptions $parserOptions,
55 RevisionRenderer $revisionRenderer,
56 LoggerSpi $loggerSpi
57 ) {
58 parent::__construct( 'ArticleView', $workKey );
59 $this->revision = $revision;
60 $this->parserOptions = $parserOptions;
61 $this->renderer = $revisionRenderer;
62 $this->loggerSpi = $loggerSpi;
63 }
64
68 public function doWork() {
69 return $this->renderRevision();
70 }
71
75 public function renderRevision(): Status {
76 $renderedRevision = $this->renderer->getRenderedRevision(
77 $this->revision,
78 $this->parserOptions,
79 null,
80 [ 'audience' => RevisionRecord::RAW ]
81 );
82
83 $time = -microtime( true );
84 $parserOutput = $renderedRevision->getRevisionParserOutput();
85 $time += microtime( true );
86
87 // Timing hack
88 if ( $time > 3 ) {
89 // TODO: Use Parser's logger (once it has one)
90 $channel = $this->parserOptions->getUseParsoid() ? 'slow-parsoid' : 'slow-parse';
91 $logger = $this->loggerSpi->getLogger( $channel );
92 $logger->info( 'Parsing {title} was slow, took {time} seconds', [
93 'time' => number_format( $time, 2 ),
94 'title' => (string)$this->revision->getPageAsLinkTarget(),
95 'trigger' => 'view',
96 ] );
97 }
98
99 return Status::newGood( $parserOutput );
100 }
101
106 public function error( $status ) {
107 return $status;
108 }
109
110}
Page revision base class.
The RevisionRenderer service provides access to rendered output for revisions.
Generic operation result class Has warning/error list, boolean status and arbitrary value.
Definition Status.php:58
Set options of the Parser.
Class for dealing with PoolCounters using class members.
PoolCounter protected work wrapping RenderedRevision->getRevisionParserOutput.
__construct(string $workKey, RevisionRecord $revision, ParserOptions $parserOptions, RevisionRenderer $revisionRenderer, LoggerSpi $loggerSpi)
Service provider interface to create \Psr\Log\LoggerInterface objects.
Definition Spi.php:64