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

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

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

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

Kira

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

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

<?php
require_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

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