Друзья, привет!
Нужно безопасно заменить в БД Друпал несколько старых слов на новые.
Обычный способ замены не работает с сериализованными данными (php функция serialize), потому что там в сериализованных данных указывается длина строки.
Поэтому сериализованные данные ломаются. Сериализованные данные не поломаются только в том случае, если длина исходного и результирующего слова совпадают.
Есть скрипт https://github.com/interconnectit/Search-Replace-DB , который выполняет правильную замену с учетом сериализованных данных.
Но он не справился с задачей. Начал жрать очень много памяти - больше 1 ГБ.
Друзья, кто что может предложить?
Комментарии
А что за слова? Где хранятся?
Я бы написал свой batch который делает node_load, str_replace, node_save
За $150 (6 часов х $25) мне было бы не слабо это сделать.
6 часов? Что-то многовато. Или это с учётом времени работы самого батча?)))
Конкретезировать ТЗ: 0.5 часа
Перененсти - развернуть на дев: 1.5-2 часа, судя по тому что скрипт жрет гиг рамы - записей там в базе не одна и не две сотни
Написать батч, потестить на деве - 2-3 часа
Перенести код на прод, перевести в режим обслуживания, сделать-проверить бэкап базы, запустить батч - 1-1.5 часа.
Итого: 5-7 часов, 6 в среднем. И это довольно-таки оптимистичный прогноз по времени.
Есть небольшая наработка, если есть желание - можете форкнуть и доделать под свои нужды.
Я не знаю что там вам менять, но обычно слова можно поменять в settings.php
<?php $conf['locale_custom_strings_en'][''] = array(
# 'forum' => 'Discussion board',
# '@count min' => '@count minutes',
# ); ?>