Удаление части сообщения по скрипту

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
alaon
phpBB 1.4.3
Сообщения: 83
Зарегистрирован: 05.07.2013 22:35
Благодарил (а): 12 раз
Поблагодарили: 14 раз

Удаление части сообщения по скрипту

Сообщение alaon » 20.09.2014 22:34

Доброго дня! Недавно появилась такая идея - сделать на форуме бб-код для оффтопа, а также скрипт, который по крону осуществлял бы поиск среди сообщений этого тега и удалял бы его спустя какое-то фиксированное время. Как бы вы посоветовали организовать данный скрипт (прямая выборка из БД или есть какие-то спецсредства форума) и что я должен знать прежде, чем начну писать его?

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11488
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2579 раз

Re: Удаление части сообщения по скрипту

Сообщение Sheer » 21.09.2014 1:23

alaon писал(а):или есть какие-то спецсредства форума
Нет.
alaon писал(а):что я должен знать
php и MySQL
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

Аватара пользователя
владимир1983
phpBB 3.1.9
Сообщения: 5954
Зарегистрирован: 27.04.2010 2:17
Откуда: Сергиев Посад
Благодарил (а): 391 раз
Поблагодарили: 730 раз

Re: Удаление части сообщения по скрипту

Сообщение владимир1983 » 21.09.2014 3:59

В мусор.
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)

alaon
phpBB 1.4.3
Сообщения: 83
Зарегистрирован: 05.07.2013 22:35
Благодарил (а): 12 раз
Поблагодарили: 14 раз

Re: Удаление части сообщения по скрипту

Сообщение alaon » 21.09.2014 18:14

владимир1983 писал(а):В мусор.
При всём уважении лично к вам, хотел обсудить эту тему глубже, выложить некоторые скромные наработки, но таки не буду, раз в мусор. Вообще, лёгкая у вас рука.
Sheer писал(а):php и MySQL
Представление имею, а вот логику работы форума не знаю. Я предположил, что тупое удаление текста прямо из БД может оказать какое-либо негативное влияние на движок, потому и спросил. В конце концов, если тегом отмечено сообщение целиком, то оно улетит с БД, а индексы? Что нужно скорректировать перед удалением? Или лучше удалить функцией движка? Если да, как? Но обсуждение не состоится, поскольку см. выше. За сим прощаюсь.

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11488
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2579 раз

Re: Удаление части сообщения по скрипту

Сообщение Sheer » 22.09.2014 0:36

alaon, используйте родную функцию phpBB3

Код: Выделить всё

function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $update_message = true, $update_search_index = true)
где первым параметром ($mode) выступает значение 'edit', а в качестве элемента массива $data['message'] отредактированный текст сообщения. Со структурой массива можно ознакомиться в файле posting.php - со строки 1091. Там же пример обращения к функции

Код: Выделить всё

			// The last parameter tells submit_post if search indexer has to be run
			$redirect_url = submit_post($mode, $post_data['post_subject'], $post_author_name, $post_data['topic_type'], $poll, $data, $update_message, ($update_message || $update_subject) ? true : false);
ЗЫ. С мусором погодим...
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14526
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1555 раз

Re: Удаление части сообщения по скрипту

Сообщение rxu » 22.09.2014 17:59

Я не представляю себе редактирование сообщений по крону, ибо это настолько ресурсозатратно, что не имеет смысла.
Крону придется каждый раз отбирать все посты, вырезать нужный кусок, и записывать их обратно. Если постов штук 100 - одно дело. А если 100 000 - вах, вах... без Deep Blue не обойтись.
Изображение

Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1799
Зарегистрирован: 19.05.2012 19:00
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: Удаление части сообщения по скрипту

Сообщение xisp » 22.09.2014 19:44

rxu писал(а):Крону придется каждый раз отбирать все посты,
Простая колонка в БД с пометкой содержания в этом посте ббкода решит эту проблему чуть менее, чем полностью.
phpBBex

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11488
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2579 раз

Re: Удаление части сообщения по скрипту

Сообщение Sheer » 22.09.2014 19:50

alaon писал(а):удалял бы его спустя какое-то фиксированное время
Можно также заставить по крону просматривать сообщения только за этот период времени. Например, от текущего минус двое суток.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14526
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1555 раз

Re: Удаление части сообщения по скрипту

Сообщение rxu » 22.09.2014 20:12

xisp писал(а):Простая колонка в БД с пометкой содержания в этом посте ббкода решит эту проблему чуть менее, чем полностью.
Эту проблему вернет обратно редактирование поста, чуть более, чем полностью.
Изображение

Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1799
Зарегистрирован: 19.05.2012 19:00
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: Удаление части сообщения по скрипту

Сообщение xisp » 22.09.2014 21:05

rxu писал(а):Эту проблему вернет обратно редактирование поста,
При пересохранении само собой нужно будет перепроверять наличие ббкода и присваивать/ удалять метку о наличии этого ббкода.
phpBBex

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14526
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1555 раз

Re: Удаление части сообщения по скрипту

Сообщение rxu » 22.09.2014 21:44

И заодно приписать скрипт для синхронизации меток с содержимым постов, а то всякое бывает.
Как не изворачивайся, для решения такой задачи придется изобретать нагромождение разных трюков, которое в итоге все равно особо не разгрузит сервер, при наличии более-менее значимого числа сообщений.

Добавлено спустя 11 минут 31 секунду:
Хотя, если просто ограничить выборку определенным числом постов за 1 проход крона (например, 10), может быть и нормально.
Изображение

alaon
phpBB 1.4.3
Сообщения: 83
Зарегистрирован: 05.07.2013 22:35
Благодарил (а): 12 раз
Поблагодарили: 14 раз

Re: Удаление части сообщения по скрипту

Сообщение alaon » 28.09.2014 19:22

Всем спасибо за ответы, вы дали много материала для размышления.
xisp писал(а):Простая колонка в БД с пометкой
Кстати, да, сам я не успел додуматься. Определённо, это разумный вариант, позволяющий распределить нагрузку во времени. Однако, я бы улучшил и этот вариант - делаем не колонку, а отдельную табличку, в которую вписываем идентификаторы сообщений, в которые помещён бб-код. Крон инициирует исполнение php-файла, который берёт информацию с этой колонки и делает выборку по данным id, после чего очищает таблицу. Насколько я припоминаю, это сильно ускорит процесс благодаря более разумной выборке в SELECT. Хотя могу ошибаться. Думаю, стоит сравнить оба варианта на предмет производительности. О результатах отпишу.
rxu писал(а):чуть более, чем полностью.
Лурк повсюду ) Будем проверять в функции отправки поста в БД.
rxu писал(а):приписать скрипт для синхронизации меток с содержимым постов
А я думаю, если определить для данных целей отдельную таблицу в БД, то ничего синхронизировать не придётся. Если только не повлиять на БД чем-то кардинальным, вроде STK или что там ещё есть... Но после такого рассинхронизация меток - самое безобидное, что может произойти, имхо.

Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Зарегистрирован: 12.12.2012 10:51
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Удаление части сообщения по скрипту

Сообщение c61 » 28.09.2014 19:54

Зачем усложнять решение данной задачи, используя cron ? Намного проще через хук. И там уже разбираться, что делать и надо ли вообще что-то делать ) В ББ-код включается невидимый комментарий, время и дата есть в шапке поста, и тд и тп. Алгоритм прозрачен.

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14526
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1555 раз

Re: Удаление части сообщения по скрипту

Сообщение rxu » 28.09.2014 20:24

А еще проще - при открытии страницы темы с постами, всё одно парсится текст каждого. Хотя, тогда страница утяжелится запросами на запись в БД, но только при наличии нужных постов.
Изображение

Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1799
Зарегистрирован: 19.05.2012 19:00
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: Удаление части сообщения по скрипту

Сообщение xisp » 28.09.2014 22:10

alaon писал(а):Насколько я припоминаю, это сильно ускорит процесс благодаря более разумной выборке в SELECT
Индексы уравняют эти варианты. Хотя нет. В случаи отдельной таблицы придётся опрашивать две таблицы, а не одну.
rxu писал(а):А еще проще - при открытии страницы темы с постами, всё одно парсится текст каждого. Хотя, тогда страница утяжелится запросами на запись в БД, но только при наличии нужных постов.
Тогда можно вообще не записывать изменения, а просто удалять текст. Пускай в БД лежит, но не отображается. Проблема может быть только если запустить форум без этой модификации- все "удалённые" участки всплывут.
phpBBex

Вернуться в «Для авторов (phpBB 3.0.x)»