Magento: почему обновление с 1.5 до 1.6RC1 CE занимает так много времени? - PullRequest
0 голосов
/ 11 июля 2011

Мне удалось обновить Magento с 1.4 до 1.5 за очень короткое время, то есть за секунды. Переход с 1,5 на 1,6 RC1, кажется, занимает очень много времени, как в часах (потерял счет времени, но движется в течение двух часов и считает).

Я очистил таблицы журналов и таблицы импорта / экспорта потоков данных, чтобы оставить ~ 10 000 SKU и несколько тысяч записей о клиентах. Данные также находятся на новом импорте, поэтому они не должны иметь поврежденных таблиц или чего-либо еще ненормального. По словам «top», mysqld потерпел неудачу, хотя ожидал 34%.

Ожидается ли ~ 2 + часа для обновления последней версии Magento CE?

P.S. Я знаю, что на самом деле это не вопрос программирования, а скорее проблема установки, однако я хотел бы узнать немного больше о том, что он делает, чтобы так долго.

РЕДАКТИРОВАТЬ: После многих часов и добавления многих таблиц, эта установка была заблокирована.

Буду признателен за любые советы о том, как заставить 1.6 работать с существующим набором данных.

1 Ответ

3 голосов
/ 06 июля 2012

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

Обновления до 1.6 будут проходить целую вечность. Кажется, существует большая разница в структуре базы данных между версиями, поэтому для выполнения команд SQL требуется около 6 или 8 часов. Главным образом команды ALTER TABLE, которые могут выполняться более часа (каждая), если таблицы полны записей. Чтобы сократить время, необходимое для этого, запустите эту команду (не забудьте изменить префикс таблицы sb_ на свой собственный)

DELETE FROM sb_sales_flat_quote WHERE updated_at < DATE_SUB(Now(),INTERVAL 7 DAY)

Он удалит все корзины покупок, кроме последней недели. Снизится до ок. 10 000 записей из более чем 250 000 в моем случае. Насколько я могу судить, это не повлияет на клиентов.

Также очистите эти таблицы (обязательно измените префикс таблицы sb_ на свой собственный):

TRUNCATE `sb_log_customer`;
ALTER TABLE `sb_log_customer` AUTO_INCREMENT=1;
TRUNCATE `sb_log_quote`;
ALTER TABLE `sb_log_quote` AUTO_INCREMENT=1;
TRUNCATE `sb_log_summary`;
ALTER TABLE `sb_log_summary` AUTO_INCREMENT=1;
TRUNCATE `sb_log_summary_type`;
ALTER TABLE `sb_log_summary_type` AUTO_INCREMENT=1;
TRUNCATE `sb_log_url`;
ALTER TABLE `sb_log_url` AUTO_INCREMENT=1;
TRUNCATE `sb_log_url_info`;
ALTER TABLE `sb_log_url_info` AUTO_INCREMENT=1;
TRUNCATE `sb_log_visitor`;
ALTER TABLE `sb_log_visitor` AUTO_INCREMENT=1;
TRUNCATE `sb_log_visitor_info`;
ALTER TABLE `sb_log_visitor_info` AUTO_INCREMENT=1;

TRUNCATE `sb_report_viewed_product_index`;
ALTER TABLE `sb_report_viewed_product_index` AUTO_INCREMENT=1;
TRUNCATE `sb_report_compared_product_index`;
ALTER TABLE `sb_report_compared_product_index` AUTO_INCREMENT=1;
TRUNCATE `sb_report_event`;
ALTER TABLE `sb_report_event` AUTO_INCREMENT=1;
TRUNCATE `sb_catalog_compare_item`;
ALTER TABLE `sb_catalog_compare_item` AUTO_INCREMENT=1;

Перед началом обновления обязательно отключите кеш! Это избавит от головной боли. Также либо удалите / отключите любые расширения, либо обновите их. Сюда входят установленные вручную, а не только те, что в Magento connect.

Если вы хотите узнать, какие команды SQL возникают при обновлении, включите отладку Magento, отредактировав /lib/Varien/Db/Adapter/Pdo/Mysql.php. Измените следующие строки на true:

protected $_debug               = true;
protected $_debuglogeverything  = true;

Затем вы найдете все команды в /var/debug/pdo_mysql.log (вы можете просматривать их на лету, используя SSHing на вашем сервере, перейдя в / var / debug / и набрав

tail -f *

Способ, которым я обновляюсь, - это FTP и копирование новейшей версии Magento поверх текущей установки. Это работает для меня. Я использую файловый менеджер CPanel, чтобы извлечь файл magento-1.x.x.x.tar.gz. (Кстати: TAR.GZ лучше, чем ZIP-файл, поскольку он содержит информацию о правах доступа к файлу)

Кроме того, добавьте это в свой файл .htaccess, чтобы заблокировать всех, кроме вашего собственного IP-адреса (измените IP-адрес на свой собственный). Вам также необходимо создать файл maintenance.html. Это не позволит посетителям начать процесс обновления слишком рано. Переименуйте /cron.php по той же причине.

## Exception Below is your IP 
RewriteCond %{REMOTE_ADDR} !^111\.222\.333\.444
RewriteCond %{REQUEST_URI} !/maintenance\.html$ 
RewriteRule .* /maintenance.html [R=302,L]

После завершения обновления 1.6.2.0 я перестроил индексы. Обновление до 1.7.0.2 с этого момента заняло около 30 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...