Physikerwelt has uploaded a new change for review.
https://gerrit.wikimedia.org/r/282413
Change subject: Reduce number of Restbase requests
......................................................................
Reduce number of Restbase requests
This change reduces the number of Restbase requests to two
by bundling all requests for MathML
Bug: T132096
Change-Id: Idfc29eeeca754738fe78ca0372e6b6725065528d
---
M MathRestbaseInterface.php
1 file changed, 57 insertions(+), 19 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Math
refs/changes/13/282413/1
diff --git a/MathRestbaseInterface.php b/MathRestbaseInterface.php
index 2273c2b..c407630 100644
--- a/MathRestbaseInterface.php
+++ b/MathRestbaseInterface.php
@@ -41,26 +41,10 @@
}
private function getContent( $type ) {
- $this->calculateHash();
- $request = array(
- 'method' => 'GET',
- 'url' => $this->getUrl(
"media/math/render/$type/{$this->hash}" )
- );
+ $request = $this->getContentRequest( $type );
$serviceClient = $this->getServiceClient();
$response = $serviceClient->run( $request );
- if ( $response['code'] === 200 ) {
- if ( array_key_exists( 'x-mathoid-style',
$response['headers'] ) ) {
- $this->mathoidStyle =
$response['headers']['x-mathoid-style'];
- }
- return $response['body'];
- }
- $this->log()->error( 'Restbase math server problem:', array(
- 'request' => $request,
- 'response' => $response,
- 'type' => $type,
- 'tex' => $this->tex
- ) );
- throw new MWException( "Cannot get $type. Server problem." );
+ return $this->evaluateContentResponse( $type, $response,
$request );
}
private function calculateHash() {
@@ -104,7 +88,7 @@
* @param array $rbis array of MathRestbaseInterface instances
*/
public static function batchEvaluate( $rbis ) {
- if ( count( $rbis ) == 0 ){
+ if ( count( $rbis ) == 0 ) {
return;
}
$requests = array();
@@ -121,6 +105,23 @@
/** @var MathRestbaseInterface $rbi */
$rbi = $rbis[$i ++];
$rbi->evaluateRestbaseCheckResponse( $response );
+ }
+ $requests = array();
+ foreach ( $rbis as $rbi ) {
+ /** @var MathRestbaseInterface $rbi */
+ $requests[] = $rbi->getContentRequest( 'mml' );
+ }
+ $results = $serviceClient->runMulti( $requests );
+ $i = 0;
+ foreach ( $results as $response ) {
+ /** @var MathRestbaseInterface $rbi */
+ $rbi = $rbis[$i];
+ try {
+ $mml = $rbi->evaluateContentResponse( 'mml',
$response, $requests[$i] );
+ $rbi->mml = $mml;
+ } catch ( Exception $e ) {
+ }
+ $i ++;
}
}
@@ -347,4 +348,41 @@
public function getMathoidStyle() {
return $this->mathoidStyle;
}
+
+ /**
+ * @param $type
+ * @return array
+ * @throws MWException
+ */
+ private function getContentRequest( $type ) {
+ $this->calculateHash();
+ $request = array(
+ 'method' => 'GET',
+ 'url' => $this->getUrl(
"media/math/render/$type/{$this->hash}" )
+ );
+ return $request;
+ }
+
+ /**
+ * @param $type
+ * @param $response
+ * @param $request
+ * @return mixed
+ * @throws MWException
+ */
+ private function evaluateContentResponse( $type, $response, $request ) {
+ if ( $response['code'] === 200 ) {
+ if ( array_key_exists( 'x-mathoid-style',
$response['headers'] ) ) {
+ $this->mathoidStyle =
$response['headers']['x-mathoid-style'];
+ }
+ return $response['body'];
+ }
+ $this->log()->error( 'Restbase math server problem:', array(
+ 'request' => $request,
+ 'response' => $response,
+ 'type' => $type,
+ 'tex' => $this->tex
+ ) );
+ throw new MWException( "Cannot get $type. Server problem." );
+ }
}
--
To view, visit https://gerrit.wikimedia.org/r/282413
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Idfc29eeeca754738fe78ca0372e6b6725065528d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Math
Gerrit-Branch: master
Gerrit-Owner: Physikerwelt <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits