Magento 2 Определяет режим обслуживания


Я на самом деле пытаюсь найти функцию, которая должна определять, находится ли веб-сайт в режиме обслуживания или нет. У кого-нибудь есть ответ, пожалуйста? Я знаю, что мы можем сделать это в консоли, но мне это нужно в одном из моих блоков.

Author: Antoine553, 2017-07-13

4 answers

Допустим, вы хотите обнаружить это внутри одного из ваших классов.
Вам нужно добавить к нему эту зависимость Magento\Framework\App\MaintenanceMode.

Сделайте свой конструктор класса похожим на это:

protected $maintenanceMode;
public function __construct(
    ....
    \Magento\Framework\App\MaintenanceMode $maintenanceMode,
    ....
) {
    ....
    $this->maintenanceMode = $maintenanceMode;
    ....
}

Затем вы можете вызвать внутри своего класса следующее:

$flag = $this->maintenanceMode->isOn();

Вы даже можете указать ip-адрес в качестве параметра для isOn

 2
Author: Marius, 2017-07-13 13:00:19

Если вы найдете var/.обслуживание.файл флага, то ваш магазин Magento 2 находится в режиме обслуживания. Это скрытый файл, поэтому вам может потребоваться включить отображение скрытых файлов.

 0
Author: Kishan Patadia, 2017-07-13 12:53:38

Magento определяет режим обслуживания следующим образом:

  1. Если var/.техническое обслуживание.флаг не существует, режим обслуживания выключен, и Magento работает нормально.

  2. В противном случае режим обслуживания включен, если не существует var/.maintenance.ip

Использование команд:

magento maintenance:enable [--ip=<ip address> ... --ip=<ip address>] | [ip=none]
magento maintenance:disable [--ip=<ip address> ... --ip=<ip address>] | [ip=none]
magento maintenance:status
 0
Author: Nikunj Vadariya, 2017-07-13 12:57:17

Когда включен режим обслуживания, Magento создает файл флага в var/.maintenance.flag

Проверьте этот файл

vendor/magento/framework/App/MaintenanceMode.php

Функция

/**
 * Sets maintenance mode "on" or "off"
 *
 * @param bool $isOn
 * @return bool
 */
public function set($isOn)
{
    if ($isOn) {
        return $this->flagDir->touch(self::FLAG_FILENAME);
    }
    if ($this->flagDir->isExist(self::FLAG_FILENAME)) {
        return $this->flagDir->delete(self::FLAG_FILENAME);
    }
    return true;
}

Чтобы проверить, включен ли режим обслуживания, проверьте эту функцию

/**
 * Checks whether mode is on
 *
 * Optionally specify an IP-address to compare against the white list
 *
 * @param string $remoteAddr
 * @return bool
 */
public function isOn($remoteAddr = '')
{
    if (!$this->flagDir->isExist(self::FLAG_FILENAME)) {
        return false;
    }
    $info = $this->getAddressInfo();
    return !in_array($remoteAddr, $info);
}
 0
Author: Priyank, 2018-03-19 10:29:55