From 5a17f03da0ea734d2c428e8422ea53da59286db2 Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Wed, 14 Aug 2013 18:54:44 +0200 Subject: [PATCH] Improved overall performance of cronjobs --- .../lib/system/cronjob/DailyCleanUpCronjob.class.php | 3 +++ .../moderation/queue/ModerationQueueManager.class.php | 10 ++++++---- ...ommentCommentModerationQueueReportHandler.class.php | 7 +++++++ .../system/package/PackageUpdateDispatcher.class.php | 8 ++++++++ 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/wcfsetup/install/files/lib/system/cronjob/DailyCleanUpCronjob.class.php b/wcfsetup/install/files/lib/system/cronjob/DailyCleanUpCronjob.class.php index 249176d421..87974f101b 100644 --- a/wcfsetup/install/files/lib/system/cronjob/DailyCleanUpCronjob.class.php +++ b/wcfsetup/install/files/lib/system/cronjob/DailyCleanUpCronjob.class.php @@ -71,6 +71,8 @@ class DailyCleanUpCronjob extends AbstractCronjob { WHERE objectTypeID = ? AND visitTime < ?"; $statement2 = WCF::getDB()->prepareStatement($sql); + + WCF::getDB()->beginTransaction(); foreach (ObjectTypeCache::getInstance()->getObjectTypes('com.woltlab.wcf.visitTracker.objectType') as $objectType) { // get lifetime $lifetime = ($objectType->lifetime ?: VisitTracker::DEFAULT_LIFETIME); @@ -85,6 +87,7 @@ class DailyCleanUpCronjob extends AbstractCronjob { $lifetime )); } + WCF::getDB()->commitTransaction(); // clean up cronjob log $sql = "DELETE FROM wcf".WCF_N."_cronjob_log diff --git a/wcfsetup/install/files/lib/system/moderation/queue/ModerationQueueManager.class.php b/wcfsetup/install/files/lib/system/moderation/queue/ModerationQueueManager.class.php index 7748bca455..5ef79c6bc9 100644 --- a/wcfsetup/install/files/lib/system/moderation/queue/ModerationQueueManager.class.php +++ b/wcfsetup/install/files/lib/system/moderation/queue/ModerationQueueManager.class.php @@ -294,10 +294,12 @@ class ModerationQueueManager extends SingletonFactory { * @param array $queueIDs */ public function removeOrphans(array $queueIDs) { - $queueAction = new ModerationQueueAction($queueIDs, 'markAsDone'); - $queueAction->executeAction(); - - $this->resetModerationCount(); + if (!empty($queueIDs)) { + $queueAction = new ModerationQueueAction($queueIDs, 'markAsDone'); + $queueAction->executeAction(); + + $this->resetModerationCount(); + } } /** diff --git a/wcfsetup/install/files/lib/system/moderation/queue/report/CommentCommentModerationQueueReportHandler.class.php b/wcfsetup/install/files/lib/system/moderation/queue/report/CommentCommentModerationQueueReportHandler.class.php index 6d0d6e9687..c1a61b68be 100644 --- a/wcfsetup/install/files/lib/system/moderation/queue/report/CommentCommentModerationQueueReportHandler.class.php +++ b/wcfsetup/install/files/lib/system/moderation/queue/report/CommentCommentModerationQueueReportHandler.class.php @@ -70,9 +70,15 @@ class CommentCommentModerationQueueReportHandler extends AbstractModerationQueue $comments[$row['commentID']] = new Comment(null, $row); } + $orphanedQueueIDs = array(); foreach ($queues as $queue) { $assignUser = false; + if (!isset($comments[$queue->objectID])) { + $orphanedQueueIDs[] = $queue->queueID; + continue; + } + $comment = $comments[$queue->objectID]; if ($this->getCommentManager($comment)->canModerate($comment->objectTypeID, $comment->objectID)) { $assignUser = true; @@ -81,6 +87,7 @@ class CommentCommentModerationQueueReportHandler extends AbstractModerationQueue $assignments[$queue->queueID] = $assignUser; } + ModerationQueueManager::getInstance()->removeOrphans($orphanedQueueIDs); ModerationQueueManager::getInstance()->setAssignment($assignments); } diff --git a/wcfsetup/install/files/lib/system/package/PackageUpdateDispatcher.class.php b/wcfsetup/install/files/lib/system/package/PackageUpdateDispatcher.class.php index 82edd37cbd..effe6a3b89 100644 --- a/wcfsetup/install/files/lib/system/package/PackageUpdateDispatcher.class.php +++ b/wcfsetup/install/files/lib/system/package/PackageUpdateDispatcher.class.php @@ -434,6 +434,7 @@ class PackageUpdateDispatcher extends SingletonFactory { (packageUpdateVersionID, package, minversion) VALUES (?, ?, ?)"; $statement = WCF::getDB()->prepareStatement($sql); + WCF::getDB()->beginTransaction(); foreach ($requirementInserts as $requirement) { $statement->execute(array( $requirement['packageUpdateVersionID'], @@ -441,6 +442,7 @@ class PackageUpdateDispatcher extends SingletonFactory { $requirement['minversion'] )); } + WCF::getDB()->commitTransaction(); } if (!empty($optionalInserts)) { @@ -459,12 +461,14 @@ class PackageUpdateDispatcher extends SingletonFactory { (packageUpdateVersionID, package) VALUES (?, ?)"; $statement = WCF::getDB()->prepareStatement($sql); + WCF::getDB()->beginTransaction(); foreach ($optionalInserts as $requirement) { $statement->execute(array( $requirement['packageUpdateVersionID'], $requirement['package'] )); } + WCF::getDB()->commitTransaction(); } if (!empty($excludedPackagesParameters)) { @@ -483,6 +487,7 @@ class PackageUpdateDispatcher extends SingletonFactory { (packageUpdateVersionID, excludedPackage, excludedPackageVersion) VALUES (?, ?, ?)"; $statement = WCF::getDB()->prepareStatement($sql); + WCF::getDB()->beginTransaction(); foreach ($excludedPackagesParameters as $excludedPackage) { $statement->execute(array( $excludedPackage['packageUpdateVersionID'], @@ -490,6 +495,7 @@ class PackageUpdateDispatcher extends SingletonFactory { $excludedPackage['excludedPackageVersion'] )); } + WCF::getDB()->commitTransaction(); } if (!empty($fromversionInserts)) { @@ -508,12 +514,14 @@ class PackageUpdateDispatcher extends SingletonFactory { (packageUpdateVersionID, fromversion) VALUES (?, ?)"; $statement = WCF::getDB()->prepareStatement($sql); + WCF::getDB()->beginTransaction(); foreach ($fromversionInserts as $fromversion) { $statement->execute(array( $fromversion['packageUpdateVersionID'], $fromversion['fromversion'] )); } + WCF::getDB()->commitTransaction(); } } -- 2.20.1