Не грузятся картинки с 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

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