protected function unlock() { if (!self::$lock) { throw new LogicException('Critical section has not been initialized.'); } flock(self::$lock, LOCK_UN); fclose(self::$lock); self::$lock = null; }