Provides database mutex that can be used to prevent race conditions between two processes that affect the same data.
С версии: 2.1.0
Пример #1
0
 /**
  * Run the upgrade process
  *
  * @return array $result Associative array containing possible errors
  */
 public function run()
 {
     $result = array('failure' => false, 'reason' => '');
     // prevent someone from running the upgrade script in parallel (see #4643)
     if (!$this->mutex->lock('upgrade')) {
         $result['failure'] = true;
         $result['reason'] = $this->translator->translate('upgrade:locked');
         return $result;
     }
     // disable the system log for upgrades to avoid exceptions when the schema changes.
     $this->events->unregisterHandler('log', 'systemlog', 'system_log_default_logger');
     $this->events->unregisterHandler('all', 'all', 'system_log_listener');
     // turn off time limit
     set_time_limit(0);
     if ($this->getUnprocessedUpgrades()) {
         $this->processUpgrades();
     }
     $this->events->trigger('upgrade', 'system', null);
     elgg_flush_caches();
     $this->mutex->unlock('upgrade');
     return $result;
 }