Не грузятся картинки с postimage.org

Автор Kira, 05 мая 2018, 04:24:49

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

Kira

postimage.org подложил свинью. Загруженные туда картинки перестали грузиться, однако они по прежнему доступны, если в ссылке на картинку postimg . org заменить на postimg.cc

Написал для себя скрипт, который делает такую замену в базе сообщений, может, кому пригодится. Работает крайне медленно, жрёт ресурсы системы, может сделать форум неработоспособным на несколько часов, поэтому добавил программную задержку. А ещё прогресс почему-то не всегда отображается в реальном времени.

<?phprequire_once("----ваш путь до ssi.php----/SSI.php");if (!defined('SMF')) die('Hacking attempt...');header("Content-type: text/html; charset=utf-8");global $smcFunc;  $request = $smcFunc['db_query']('', ' SELECT COUNT(id_msg)  FROM {db_prefix}messages WHERE body LIKE "%postimg.cc%"', array() );  $row = $smcFunc['db_fetch_assoc']($request); $count = $row['COUNT(id_msg)'] or die('Сообщений не найдено.');  echo 'Всего сообщений: ',$count, '<br>'; echo 'Осталось сообщений: <span id="step"></span>'; while ($row && $count>=0){ usleep(1000); $request = $smcFunc['db_query']('', ' SELECT id_msg, body  FROM {db_prefix}messages WHERE body LIKE "%postimg.cc%" LIMIT 1 ');  $row = $smcFunc['db_fetch_assoc']($request);  if ($row){ $new_body = str_replace('postimg.cc', 'postimg.cc', $row['body']); $smcFunc['db_query']('', ' UPDATE {db_prefix}messages SET body = {string:body} WHERE id_msg={int:id_msg}', array( 'id_msg' => $row['id_msg'], 'body' => $new_body, ) ); }  echo '<script>document.getElementById("step").innerHTML = '.$count.'</script>';  $count--; }?>

UPD: На этом форуме такая замена происходит автоматически? В строках 13, 30 и в строке $new_body = str_replace('postimg.cc', 'postimg.cc', $row['body']);первая "postimg.cc" это "postimg . org" без пробелов.

Yarik

В админке в через цензуру ставите автозамену одного домена на другой. Профит :D
Скачиваете дамп базы,открываете его нотпад++ и поиском с заменой правите все домены на нужный,сохраняете и заливаете базу обратно. Быстро,ничего не перегружено и так же профит.
Предпочтительный способ выберете сами.

Kira

Цитата: S.T.A.L.K.E.R. от 05 мая 2018, 11:52:07Скачиваете дамп базы,открываете его нотпад++ и поиском с заменой правите все домены на нужный,сохраняете и заливаете базу обратно. Быстро,ничего не перегружено и так же профит.
Чёто мне показалось, что открывать нотпадом файл размером 700мб не очень хорошая идея..

Согласен, есть способы и попроще :)

Yarik

Цитата: Kira от 05 мая 2018, 14:17:10Чёто мне показалось, что открывать нотпадом файл размером 700мб не очень хорошая идея..

Согласен, есть способы и попроще :)

А зачем всю БД открывать?Достаточно открыть таблицу с сообщениями. ;)

Kira

Это само собой. И да, она сильно меньше всей базы :D
Наверно можно так поступить с результатами выборки, но, например, в моём случае это около 7000 сообщений, тоже приличный объём. А так скриптик за ночь справился.


Yarik

Цитата: Kira от 05 мая 2018, 21:52:27Наверно можно так поступить с результатами выборки, но, например, в моём случае это около 7000 сообщений, тоже приличный объём.
Я 45 тысяч замен делал примерно за 5 минут.Это на всё.В БД было около 300.000 сообщений.
ВВ-коды переписывали.

Kira



digger®

#8
Цитата: Kira от 05 мая 2018, 14:17:10Согласен, есть способы и попроще :)

Например, так

update smf_messages set body = replace(body, 'postimg._org', 'postimg.cc') where body like '%postimg._org%';

Yarik

О...
Подсказали ещё проще.Я в мускуле плаваю ещё до сих пор. :-\