Слабо решить эту задачу? Безопасная замена текстов в БД с учетом сериализованных данных.

Главные вкладки

Аватар пользователя osmanbekirov osmanbekirov 2 января 2017 в 12:35

Друзья, привет!

Нужно безопасно заменить в БД Друпал несколько старых слов на новые.

Обычный способ замены не работает с сериализованными данными (php функция serialize), потому что там в сериализованных данных указывается длина строки.
Поэтому сериализованные данные ломаются. Сериализованные данные не поломаются только в том случае, если длина исходного и результирующего слова совпадают.

Есть скрипт https://github.com/interconnectit/Search-Replace-DB , который выполняет правильную замену с учетом сериализованных данных.

Но он не справился с задачей. Начал жрать очень много памяти - больше 1 ГБ.

Друзья, кто что может предложить?

Комментарии

Аватар пользователя Andruxa Andruxa 2 января 2017 в 13:37
1

Я бы написал свой batch который делает node_load, str_replace, node_save
За $150 (6 часов х $25) мне было бы не слабо это сделать.

Аватар пользователя Andruxa Andruxa 3 января 2017 в 1:46

Конкретезировать ТЗ: 0.5 часа
Перененсти - развернуть на дев: 1.5-2 часа, судя по тому что скрипт жрет гиг рамы - записей там в базе не одна и не две сотни
Написать батч, потестить на деве - 2-3 часа
Перенести код на прод, перевести в режим обслуживания, сделать-проверить бэкап базы, запустить батч - 1-1.5 часа.
Итого: 5-7 часов, 6 в среднем. И это довольно-таки оптимистичный прогноз по времени.

Аватар пользователя Ветер Ветер 3 января 2017 в 0:48

Я не знаю что там вам менять, но обычно слова можно поменять в settings.php

<?php $conf['locale_custom_strings_en'][''] = array(
#   'forum'      => 'Discussion board',
#   '@count min' => '@count minutes',
# );

?>