Сценарии установки/Обновления - Могут ли они запускаться несколько раз, когда несколько пользователей заходят на сайт до того, как они закончат?


У нас есть несколько обновлений, которые мы хотели бы запустить с помощью сценария обновления модуля. Выполнение одного из них занимает около 5 минут.

Проблема здесь, в которой мы не уверены, заключается в том, что сайт очень активен.

Итак, когда мы запустим сценарий обновления в производство, как он будет себя вести?

Будет ли сценарий обновления постоянно запускаться несколько раз, когда люди заходят на сайт, пока один его экземпляр не будет окончательно завершен?

Достаточно ли у Magento ума, чтобы запустить только один его экземпляр (даже если он еще не завершен и другие люди заходят на сайт)?

Мы находимся на Magento EE 1.9.

Author: Aasim Goriya, 2013-04-17

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/

Короче говоря, восстановление для очистки нескольких выполнений обновления потенциально приведет к более длительному простою, чем если бы вы только что перенесли хранилище в начнем с этого. Планируйте техническое обслуживание и многократно отрабатывайте его в промежуточной среде, прежде чем выполнять обновление.

 8
Author: philwinkle, 2013-04-17 17:16:31