Index: branches/5.2.x/core/kernel/managers/scheduled_task_manager.php =================================================================== diff -u -N -r16513 -r16665 --- branches/5.2.x/core/kernel/managers/scheduled_task_manager.php (.../scheduled_task_manager.php) (revision 16513) +++ branches/5.2.x/core/kernel/managers/scheduled_task_manager.php (.../scheduled_task_manager.php) (revision 16665) @@ -1,6 +1,6 @@ getDomainByName('DomainName', DOMAIN); foreach ($events_source as $short_name => $event_data) { + // Scheduled task was updated from another process. + if ( $this->getLiveData($short_name) != $event_data ) { + continue; + } + if ( $site_domain_id && $event_data['SiteDomainLimitation'] != '' ) { $site_domains = explode('|', substr($event_data['SiteDomainLimitation'], 1, -1)); @@ -152,6 +157,22 @@ } /** + * Returns LIVE scheduled task data. + * + * @param string $short_name Short scheduled task name. + * + * @return array + */ + protected function getLiveData($short_name) + { + $sql = 'SELECT * + FROM ' . $this->Application->getUnitOption('scheduled-task', 'TableName') . ' + WHERE Status = ' . STATUS_ACTIVE . ' AND Name = ' . $this->Conn->qstr($short_name); + + return $this->Conn->GetRow($sql); + } + + /** * Runs scheduled task based on given data * * @param Array $scheduled_task_data @@ -220,4 +241,4 @@ 'Name = ' . $this->Conn->qstr($scheduled_task_name) ); } -} \ No newline at end of file +}