Статьи

Используйте командную строку поиска заменить сценарий БД

Возможно, вы слышали, как я упоминал этот скрипт в моих предыдущих статьях, поскольку я искренне рекомендую его для изменения тех надоедливых ссылок, которые все еще указывают на старые URL-адреса . Я понятия не имею, как люди перемещают или копируют свой сайт WordPress без инструмента Search Replace DB. Его сила заключается в замене сериализованных значений глубоко в базе данных. Кроме того, он не зависит от WordPress, хотя работает с ним (и даже официально рекомендуется). Эта статья посвящена версии командной строки Search Replace DB, которая более надежна и менее подвержена ошибкам.

GUI может потерпеть неудачу!

Я использовал графический интерфейс только до того дня, когда он мне показался неудачным (с ошибкой AJAX). Проблема возникла из-за перемещения сайта WordPress, который я не создавал. Был плагин под названием Duplicator, который использовал BLOB, тип данных двоичного объекта в базе данных, который, я признаю, я никогда не видел раньше. Мне пришлось копаться в журналах сервера на Amazon RDS , не увидев ничего на веб-сервере. Единственное, что я нашел, было «Прерванное соединение» (ошибка чтения пакетов связи). Короче говоря, я решил дать команду Search Replace DB попробовать, и я счастлив, что попробовал.

Чем отличается командная строка Search Replace DB?

Операция фактического поиска и замены выполняется намного быстрее, не то чтобы это имело большое значение, так как я делаю это не каждый день. Но казалось, что красивый интерфейс, который работает с кучей вызовов AJAX, является непроизводительным. Этот инструмент использует PHP CLI, который полностью отличается от того, что обслуживает ваши страницы. Это может быть даже не та же версия!

Единственная громоздкая вещь, которую я заметил, это то, что она не загружает учетные данные автоматически wp-config.php. Я должен был указать все напрямую. Тем не менее, я наконец смог увидеть ошибку PHP: Класс __PHP_Incomplete_Class не имеет десериализатора . После этого я обратился к сообществу проекта на GitHub за подходящим пул-запросом, который быстро решил мою проблему.

Почему это более безопасно?

Я думаю, это прекрасно, что вам не нужно помещать инструмент в общедоступную папку под каким-то неясным именем, чтобы использовать его (из браузера). Если вы случайно оставите там версию с графическим интерфейсом, злоумышленникам удастся найти инструмент. Напротив, вы можете разместить командную строку Search Replace DB в любом месте на вашем сервере! Вы взаимодействуете с ним по SSH , и вам даже не нужно удалять его после завершения.

Как использовать CLI?

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

php srdb.cli.php -h example.rds.amazonaws.com -n database_name -u user_name -p your_password -s old.example.com -r example.com -v true -z

(Очевидно, вам необходимо указать свои данные.) Как видите, для этого требуется имя хоста и базы данных / user / pass. Это -sпоиск и -rзначение, которым вы его заменяете. Мой совет: включите подробный режим, -v trueчтобы увидеть, что происходит. Очень важно: сначала используйте сухой режим с -zопцией. Когда вы будете уверены, удалите его, чтобы включить его, и повторите команду. Например, это выглядит так:

results: The dry-run option was selected. No replacements will be made.
wp_commentmeta: replacing old.example.com with example.com
wp_commentmeta: 0 rows, 0 changes found, 0 updates made in 0.00045514 seconds
wp_comments: replacing old.example.com with example.com
wp_comments: 1 rows, 0 changes found, 0 updates made in 0.00049305 seconds
wp_links: replacing old.example.com with example.com
wp_links: 0 rows, 0 changes found, 0 updates made in 0.00015807 seconds
wp_options: replacing old.example.com with example.com
wp_options: 125 rows, 3 changes found, 0 updates made in 0.00367403 seconds
wp_postmeta: replacing old.example.com with example.com
wp_postmeta: 6 rows, 0 changes found, 0 updates made in 0.00053310 seconds
wp_posts: replacing old.example.com with example.com
wp_posts: 4 rows, 6 changes found, 0 updates made in 0.00090098 seconds
wp_term_relationships: replacing old.example.com with example.com
wp_term_relationships: 1 rows, 0 changes found, 0 updates made in 0.00029993 s...
wp_term_taxonomy: replacing old.example.com with example.com
wp_term_taxonomy: 1 rows, 0 changes found, 0 updates made in 0.00040007 seconds
wp_termmeta: replacing old.example.com with example.com
wp_termmeta: 0 rows, 0 changes found, 0 updates made in 0.00014710 seconds
wp_terms: replacing old.example.com with example.com
wp_terms: 1 rows, 0 changes found, 0 updates made in 0.00082612 seconds
wp_usermeta: replacing old.example.com with example.com
wp_usermeta: 48 rows, 0 changes found, 0 updates made in 0.00122905 seconds
wp_users: replacing old.example.com with example.com
wp_users: 3 rows, 0 changes found, 0 updates made in 0.00074220 seconds

Replacing old.example.com with example.com on 12 tables with 190 rows
9 changes would have been made
0 updates were actually made
It took 0.02472520 seconds

And we're done!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Кнопка «Наверх»

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: