Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

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

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

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

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

Сообщение alaon »

Доброго дня! Недавно появилась такая идея - сделать на форуме бб-код для оффтопа, а также скрипт, который по крону осуществлял бы поиск среди сообщений этого тега и удалял бы его спустя какое-то фиксированное время. Как бы вы посоветовали организовать данный скрипт (прямая выборка из БД или есть какие-то спецсредства форума) и что я должен знать прежде, чем начну писать его?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

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

Сообщение Sheer »

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

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

Сообщение владимир1983 »

В мусор.
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
alaon
phpBB 1.4.3
Сообщения: 83
Стаж: 10 лет 8 месяцев
Благодарил (а): 12 раз
Поблагодарили: 14 раз
Контактная информация:

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

Сообщение alaon »

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

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

Сообщение Sheer »

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
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

Я не представляю себе редактирование сообщений по крону, ибо это настолько ресурсозатратно, что не имеет смысла.
Крону придется каждый раз отбирать все посты, вырезать нужный кусок, и записывать их обратно. Если постов штук 100 - одно дело. А если 100 000 - вах, вах... без Deep Blue не обойтись.
Изображение
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

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

Сообщение xisp »

rxu писал(а):Крону придется каждый раз отбирать все посты,
Простая колонка в БД с пометкой содержания в этом посте ббкода решит эту проблему чуть менее, чем полностью.
phpBBex
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

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

Сообщение Sheer »

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

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

Сообщение rxu »

xisp писал(а):Простая колонка в БД с пометкой содержания в этом посте ббкода решит эту проблему чуть менее, чем полностью.
Эту проблему вернет обратно редактирование поста, чуть более, чем полностью.
Изображение
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

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

Сообщение xisp »

rxu писал(а):Эту проблему вернет обратно редактирование поста,
При пересохранении само собой нужно будет перепроверять наличие ббкода и присваивать/ удалять метку о наличии этого ббкода.
phpBBex
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

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

Добавлено спустя 11 минут 31 секунду:
Хотя, если просто ограничить выборку определенным числом постов за 1 проход крона (например, 10), может быть и нормально.
Изображение
alaon
phpBB 1.4.3
Сообщения: 83
Стаж: 10 лет 8 месяцев
Благодарил (а): 12 раз
Поблагодарили: 14 раз
Контактная информация:

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

Сообщение alaon »

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

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

Сообщение c61 »

Зачем усложнять решение данной задачи, используя cron ? Намного проще через хук. И там уже разбираться, что делать и надо ли вообще что-то делать ) В ББ-код включается невидимый комментарий, время и дата есть в шапке поста, и тд и тп. Алгоритм прозрачен.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

А еще проще - при открытии страницы темы с постами, всё одно парсится текст каждого. Хотя, тогда страница утяжелится запросами на запись в БД, но только при наличии нужных постов.
Изображение
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

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

Сообщение xisp »

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

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