Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Отмена действий
 
 автор: FireTiger   (17.02.2008 в 15:28)   письмо автору
 
 

Собственно сабж. Как реализовать систему отмены действий любой группы пользователей. Например как это сделано на википедии. Там выводятся все правки которые были совершены, и, если что-то не устраивает, ты отменяешь это действие и восстанавливаешь данные ранее сохраненные. Вопрос собственно в том, как все это организовать? Куда лучше записывать данные, с какой переодичностью и т.д.

   
 
 автор: Киналь   (17.02.2008 в 15:41)   письмо автору
 
   для: FireTiger   (17.02.2008 в 15:28)
 

Если использовать БД - то стоит сделать отдельную таблицу для архива и там держать все старые версии. Записывать - при каждом изменении.

   
 
 автор: morkovkin   (17.02.2008 в 17:39)   письмо автору
 
   для: FireTiger   (17.02.2008 в 15:28)
 

Да, лучший способ это использование нескольких БД. Главное продумать логику, а так идея не нова и вполне просто реализуема.

   
 
 автор: Trianon   (17.02.2008 в 17:48)   письмо автору
 
   для: morkovkin   (17.02.2008 в 17:39)
 

а зачем несколько БД?
Что мешает разместить нужные таблицы в одной базе?

   
 
 автор: FireTiger   (18.02.2008 в 06:16)   письмо автору
 
   для: Trianon   (17.02.2008 в 17:48)
 

Да, можно создать две разные таблицы, с актальной версией и с архивными, но а если текст очень большой (100 Кб), и страниц много (100 тыс) и каждая страница меняется каждый день по несколько раз? Что будет с базой, когда мы полную версию будем записывать при самом малом изменении и записывать вновь этот 100 килобайтный текст с измененной одной буквой? Так не выгодно... База засорится, но как быть незнаю. Есть идеи?

   
 
 автор: mechanic   (18.02.2008 в 11:15)   письмо автору
 
   для: FireTiger   (18.02.2008 в 06:16)
 

делать diff и записывать его
т.е. система будет знать какой кусочек (кусочки) поменялся(лись) и на основе этого можно будет легко сделать восстановление, и пусть там хоть мегабайтный текст будет, при изменении одно буквы дифф будет маленьким и ничего страшного не будет

   
 
 автор: FireTiger   (18.02.2008 в 11:48)   письмо автору
 
   для: mechanic   (18.02.2008 в 11:15)
 

А где можно посмотреть пример использования diff'a?

   
 
 автор: mechanic   (18.02.2008 в 12:47)   письмо автору
 
   для: FireTiger   (18.02.2008 в 11:48)
 

ээ..
да пожалста:
----------
а бв
----------
абв
----------
diff => -" " в позиции 1
вот как то так, на пальцах если
думаю идея-то понятна

   
 
 автор: FireTiger   (19.02.2008 в 06:49)   письмо автору
 
   для: mechanic   (18.02.2008 в 12:47)
 

хмм....а как это в php использовать?

   
 
 автор: FireTiger   (22.02.2008 в 10:58)   письмо автору
 
   для: mechanic   (18.02.2008 в 12:47)
 

Можете привести код на PHP для работы с diff?

   
 
 автор: Trianon   (22.02.2008 в 11:14)   письмо автору
 
   для: FireTiger   (18.02.2008 в 06:16)
 

>Да, можно создать две разные таблицы, с актальной версией и с архивными, но а если текст очень большой (100 Кб), и страниц много (100 тыс) и каждая страница меняется каждый день по несколько раз? Что будет с базой, когда мы полную версию будем записывать при самом малом изменении и записывать вновь этот 100 килобайтный текст с измененной одной буквой? Так не выгодно... База засорится, но как быть незнаю. Есть идеи?

По-моему, Вы сейчас излагаете не фактическое положение дел, а придуманное.
Сто тысяч страниц по нескольку раз в день - это миллион запросов в день.
Кто будет издавать эти запросы?
Миллион в сутки запросов к diff загнет Вшу систему значительно раньше, чем самую лобовую реализацию через БД.

Совет: решите задачу в лоб. Посмотрите, как ведет себя база. Может не так страшен тойфель, как его малюют?

   
 
 автор: Петр   (22.02.2008 в 11:19)   письмо автору
 
   для: Trianon   (22.02.2008 в 11:14)
 

Согласен.. такая нагрузка врядли будет..
К тому же это уже проблема физического хранения информации, а не недочеты логической системы.
Для решения такой проблемы, можно просто хранить последнии 5-10 записей или изменение данных за месяц (к примеру), а старое удалять из БД

   
 
 автор: FireTiger   (23.02.2008 в 19:52)   письмо автору
 
   для: Trianon   (22.02.2008 в 11:14)
 

Насчет количества страниц и изменений, то это да, я преувеличил. Но все таки, очень хотелось бы изучить эту технологию. Можете пожалуйста или показать или ссылку дать... где можно увидеть как использовать diff в программировании на PHP?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования