From 47cfadd0f691c3e1bf7e0b79bbbbe5d79593b369 Mon Sep 17 00:00:00 2001 From: Max Semenik Date: Wed, 13 Jan 2010 19:45:11 +0000 Subject: [PATCH] Refactoring of Article::incViewCount(): use Database::getType() instead of $wgDBtype, and lockTables() instead of constructing SQL manually --- includes/Article.php | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/includes/Article.php b/includes/Article.php index cde5f470b6..7264b1d3dc 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -3631,7 +3631,7 @@ class Article { */ public static function incViewCount( $id ) { $id = intval( $id ); - global $wgHitcounterUpdateFreq, $wgDBtype; + global $wgHitcounterUpdateFreq; $dbw = wfGetDB( DB_MASTER ); $pageTable = $dbw->tableName( 'page' ); @@ -3662,23 +3662,23 @@ class Article { wfProfileIn( 'Article::incViewCount-collect' ); $old_user_abort = ignore_user_abort( true ); - if($wgDBtype == 'mysql') - $dbw->query("LOCK TABLES $hitcounterTable WRITE"); - $tabletype = $wgDBtype == 'mysql' ? "ENGINE=HEAP " : ''; - $dbw->query("CREATE TEMPORARY TABLE $acchitsTable $tabletype AS ". + $dbType = $dbw->getType(); + $dbw->lockTables( array(), array( 'hitcounter' ), __METHOD__, false ); + $tabletype = $dbType == 'mysql' ? "ENGINE=HEAP " : ''; + $dbw->query( "CREATE TEMPORARY TABLE $acchitsTable $tabletype AS ". "SELECT hc_id,COUNT(*) AS hc_n FROM $hitcounterTable ". - 'GROUP BY hc_id'); - $dbw->query("DELETE FROM $hitcounterTable"); - if($wgDBtype == 'mysql') { - $dbw->query('UNLOCK TABLES'); - $dbw->query("UPDATE $pageTable,$acchitsTable SET page_counter=page_counter + hc_n ". - 'WHERE page_id = hc_id'); + 'GROUP BY hc_id', __METHOD__ ); + $dbw->delete( 'hitcounter', '*', __METHOD__ ); + $dbw->unlockTables( __METHOD__ ); + if( $dbType == 'mysql' ) { + $dbw->query( "UPDATE $pageTable,$acchitsTable SET page_counter=page_counter + hc_n ". + 'WHERE page_id = hc_id', __METHOD__ ); } else { - $dbw->query("UPDATE $pageTable SET page_counter=page_counter + hc_n ". - "FROM $acchitsTable WHERE page_id = hc_id"); + $dbw->query( "UPDATE $pageTable SET page_counter=page_counter + hc_n ". + "FROM $acchitsTable WHERE page_id = hc_id", __METHOD__ ); } - $dbw->query("DROP TABLE $acchitsTable"); + $dbw->query( "DROP TABLE $acchitsTable", __METHOD__ ); ignore_user_abort( $old_user_abort ); wfProfileOut( 'Article::incViewCount-collect' ); -- 2.20.1