Esempio n. 1
0
 public static function processLock($singleton = false)
 {
     $processName = md5(basename($_SERVER['SCRIPT_FILENAME']));
     $serverName = php_uname('n');
     $key = 'process_lock_' . $processName;
     if ($singleton === true && GlobalCache::exists($key) !== false) {
         exit;
     }
     if (APPLICATION_ENV != Environment::LOCAL) {
         $maxTime = 10;
         sleep(rand(0, $maxTime));
         $processName = md5(basename($_SERVER['SCRIPT_FILENAME']));
         $serverName = php_uname('n');
         $key = 'process_lock_' . $processName;
         GlobalCache::set($key, $serverName);
         sleep($maxTime + 5);
         $winner = GlobalCache::get($key);
         if ($winner !== $serverName) {
             exit;
         }
     }
 }