Удаление части сообщения по скрипту
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
Удаление части сообщения по скрипту
Доброго дня! Недавно появилась такая идея - сделать на форуме бб-код для оффтопа, а также скрипт, который по крону осуществлял бы поиск среди сообщений этого тега и удалял бы его спустя какое-то фиксированное время. Как бы вы посоветовали организовать данный скрипт (прямая выборка из БД или есть какие-то спецсредства форума) и что я должен знать прежде, чем начну писать его?
-
Sheer
- Former team member
- Сообщения: 12113
- Стаж: 19 лет 7 месяцев
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2756 раз
Re: Удаление части сообщения по скрипту
Нет.alaon писал(а):или есть какие-то спецсредства форума
php и MySQLalaon писал(а):что я должен знать
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
владимир1983
- phpBB 3.2.6
- Сообщения: 5954
- Стаж: 16 лет 4 месяца
- Откуда: Сергиев Посад
- Благодарил (а): 373 раза
- Поблагодарили: 727 раз
Re: Удаление части сообщения по скрипту
В мусор.
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
Нет человека - нет проблемы. (c)
Re: Удаление части сообщения по скрипту
При всём уважении лично к вам, хотел обсудить эту тему глубже, выложить некоторые скромные наработки, но таки не буду, раз в мусор. Вообще, лёгкая у вас рука.владимир1983 писал(а):В мусор.
Представление имею, а вот логику работы форума не знаю. Я предположил, что тупое удаление текста прямо из БД может оказать какое-либо негативное влияние на движок, потому и спросил. В конце концов, если тегом отмечено сообщение целиком, то оно улетит с БД, а индексы? Что нужно скорректировать перед удалением? Или лучше удалить функцией движка? Если да, как? Но обсуждение не состоится, поскольку см. выше. За сим прощаюсь.Sheer писал(а):php и MySQL
-
Sheer
- Former team member
- Сообщения: 12113
- Стаж: 19 лет 7 месяцев
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2756 раз
Re: Удаление части сообщения по скрипту
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

- Сообщения: 17270
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: Удаление части сообщения по скрипту
Я не представляю себе редактирование сообщений по крону, ибо это настолько ресурсозатратно, что не имеет смысла.
Крону придется каждый раз отбирать все посты, вырезать нужный кусок, и записывать их обратно. Если постов штук 100 - одно дело. А если 100 000 - вах, вах... без Deep Blue не обойтись.
Крону придется каждый раз отбирать все посты, вырезать нужный кусок, и записывать их обратно. Если постов штук 100 - одно дело. А если 100 000 - вах, вах... без Deep Blue не обойтись.
-
xisp
- phpBB 3.0.0 RC7
- Сообщения: 1798
- Стаж: 14 лет 4 месяца
- Благодарил (а): 152 раза
- Поблагодарили: 215 раз
- Забанен: Бессрочно
Re: Удаление части сообщения по скрипту
Простая колонка в БД с пометкой содержания в этом посте ббкода решит эту проблему чуть менее, чем полностью.rxu писал(а):Крону придется каждый раз отбирать все посты,
phpBBex
-
Sheer
- Former team member
- Сообщения: 12113
- Стаж: 19 лет 7 месяцев
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2756 раз
Re: Удаление части сообщения по скрипту
Можно также заставить по крону просматривать сообщения только за этот период времени. Например, от текущего минус двое суток.alaon писал(а):удалял бы его спустя какое-то фиксированное время
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
rxu
- phpBB Guru

- Сообщения: 17270
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: Удаление части сообщения по скрипту
Эту проблему вернет обратно редактирование поста, чуть более, чем полностью.xisp писал(а):Простая колонка в БД с пометкой содержания в этом посте ббкода решит эту проблему чуть менее, чем полностью.
-
xisp
- phpBB 3.0.0 RC7
- Сообщения: 1798
- Стаж: 14 лет 4 месяца
- Благодарил (а): 152 раза
- Поблагодарили: 215 раз
- Забанен: Бессрочно
Re: Удаление части сообщения по скрипту
При пересохранении само собой нужно будет перепроверять наличие ббкода и присваивать/ удалять метку о наличии этого ббкода.rxu писал(а):Эту проблему вернет обратно редактирование поста,
phpBBex
-
rxu
- phpBB Guru

- Сообщения: 17270
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: Удаление части сообщения по скрипту
И заодно приписать скрипт для синхронизации меток с содержимым постов, а то всякое бывает.
Как не изворачивайся, для решения такой задачи придется изобретать нагромождение разных трюков, которое в итоге все равно особо не разгрузит сервер, при наличии более-менее значимого числа сообщений.
Добавлено спустя 11 минут 31 секунду:
Хотя, если просто ограничить выборку определенным числом постов за 1 проход крона (например, 10), может быть и нормально.
Как не изворачивайся, для решения такой задачи придется изобретать нагромождение разных трюков, которое в итоге все равно особо не разгрузит сервер, при наличии более-менее значимого числа сообщений.
Добавлено спустя 11 минут 31 секунду:
Хотя, если просто ограничить выборку определенным числом постов за 1 проход крона (например, 10), может быть и нормально.
Re: Удаление части сообщения по скрипту
Всем спасибо за ответы, вы дали много материала для размышления.
Кстати, да, сам я не успел додуматься. Определённо, это разумный вариант, позволяющий распределить нагрузку во времени. Однако, я бы улучшил и этот вариант - делаем не колонку, а отдельную табличку, в которую вписываем идентификаторы сообщений, в которые помещён бб-код. Крон инициирует исполнение php-файла, который берёт информацию с этой колонки и делает выборку по данным id, после чего очищает таблицу. Насколько я припоминаю, это сильно ускорит процесс благодаря более разумной выборке в SELECT. Хотя могу ошибаться. Думаю, стоит сравнить оба варианта на предмет производительности. О результатах отпишу.xisp писал(а):Простая колонка в БД с пометкой
Лурк повсюду ) Будем проверять в функции отправки поста в БД.rxu писал(а):чуть более, чем полностью.
А я думаю, если определить для данных целей отдельную таблицу в БД, то ничего синхронизировать не придётся. Если только не повлиять на БД чем-то кардинальным, вроде STK или что там ещё есть... Но после такого рассинхронизация меток - самое безобидное, что может произойти, имхо.rxu писал(а):приписать скрипт для синхронизации меток с содержимым постов
-
c61
- phpBB 2.0.6
- Сообщения: 506
- Стаж: 13 лет 9 месяцев
- Благодарил (а): 42 раза
- Поблагодарили: 251 раз
Re: Удаление части сообщения по скрипту
Зачем усложнять решение данной задачи, используя cron ? Намного проще через хук. И там уже разбираться, что делать и надо ли вообще что-то делать ) В ББ-код включается невидимый комментарий, время и дата есть в шапке поста, и тд и тп. Алгоритм прозрачен.
-
rxu
- phpBB Guru

- Сообщения: 17270
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: Удаление части сообщения по скрипту
А еще проще - при открытии страницы темы с постами, всё одно парсится текст каждого. Хотя, тогда страница утяжелится запросами на запись в БД, но только при наличии нужных постов.
-
xisp
- phpBB 3.0.0 RC7
- Сообщения: 1798
- Стаж: 14 лет 4 месяца
- Благодарил (а): 152 раза
- Поблагодарили: 215 раз
- Забанен: Бессрочно
Re: Удаление части сообщения по скрипту
Индексы уравняют эти варианты. Хотя нет. В случаи отдельной таблицы придётся опрашивать две таблицы, а не одну.alaon писал(а):Насколько я припоминаю, это сильно ускорит процесс благодаря более разумной выборке в SELECT
Тогда можно вообще не записывать изменения, а просто удалять текст. Пускай в БД лежит, но не отображается. Проблема может быть только если запустить форум без этой модификации- все "удалённые" участки всплывут.rxu писал(а):А еще проще - при открытии страницы темы с постами, всё одно парсится текст каждого. Хотя, тогда страница утяжелится запросами на запись в БД, но только при наличии нужных постов.
phpBBex

