Сценарии установки/Обновления - Могут ли они запускаться несколько раз, когда несколько пользователей заходят на сайт до того, как они закончат?
У нас есть несколько обновлений, которые мы хотели бы запустить с помощью сценария обновления модуля. Выполнение одного из них занимает около 5 минут.
Проблема здесь, в которой мы не уверены, заключается в том, что сайт очень активен.
Итак, когда мы запустим сценарий обновления в производство, как он будет себя вести?
Будет ли сценарий обновления постоянно запускаться несколько раз, когда люди заходят на сайт, пока один его экземпляр не будет окончательно завершен?
Достаточно ли у Magento ума, чтобы запустить только один его экземпляр (даже если он еще не завершен и другие люди заходят на сайт)?
Мы находимся на Magento EE 1.9.
1 answers
Теоретически, да. Я видел, как сценарии обновления запускались несколько раз - вот почему любой сценарий обновления, который я создаю, загружающий CMS, EAV или другую атрибутивную информацию, обычно кодируется для защиты от многократной вставки.
Наилучшая практика:
Используя SSH, запустите следующее из корневого каталога документов Magento:
touch maintenance.flag
Это создаст файл под названием "maintenance.flag" в вашем корневом каталоге Magento, который эффективно отключит ваш магазин во время этого обновлять. 5 минут простоя должны быть относительно безопасными, если вы работаете в нерабочее или ночное время.
Обновите свой магазин Magento, запустив обновление/извлечение из системы управления версиями или с помощью предпочтительного метода развертывания. Для выполнения обновления вы можете выполнить:
php index.php
- снова из корневого каталога документа. Это положит начало вашему обновлению.
Вы можете разрешить себе доступ к части CMS (если вы предпочитаете не запускать скрипт обновления самостоятельно через SSH) с помощью реализация index.php обходной путь (читай: взлом), который позволяет получить доступ к определенным IP-адресам, пропуская проверку обслуживания.файл флага:
$ip = $_SERVER['REMOTE_ADDR'];
$allowed = array('1.1.1.1','2.2.2.2'); // these are the IP's allowed
И замените эту строку:
if (file_exists($maintenanceFile)) {
С этой строкой:
if (file_exists($maintenanceFile) && !in_array($ip, $allowed)) {
Источник: http://inchoo.net/ecommerce/magento/maintenance-mode-in-magento/
Короче говоря, восстановление для очистки нескольких выполнений обновления потенциально приведет к более длительному простою, чем если бы вы только что перенесли хранилище в начнем с этого. Планируйте техническое обслуживание и многократно отрабатывайте его в промежуточной среде, прежде чем выполнять обновление.