Red
Что гуглить
Maxim
Что гуглить
Блокировки?)
Red
Окей Гугл блокировка) а он должен понять что я от него хочу)
Evgeniy
кто то сейчас гит переизобретет в бд
Evgeniy
для работы редакторов
Evgeniy
когда открываешь материал получаешь эту колонку, как кто то меняет материал, проверяешь чтобы даты последнего редактирования совпадали
Maxim
В джумле у статей такое, постоянно кто то подвисает и статья закрыта
Evgeniy
если совпадают редактируешь и МЕНЯЕШЬ дату
Evgeniy
или ревизивию
SarcasmIO
неплохой выход
Evgeniy
если ревизии(даты последнего реадктирования) документов не совпадают
Evgeniy
до отображаешь diff между тем что хотят сохранить и тем что в бд
SarcasmIO
😉
Evgeniy
пусть резолвит конфликт в ручном режиме
Evgeniy
это самый простой и надежный способ
Maxim
Какие?
http://forum.codenet.ru/q42691/
Evgeniy
человек открыл статью и вырубил комп по питанию
Evgeniy
вот тебе и dead lock
Evgeniy
который никто не разблокирует
Maxim
Там каменты
Maxim
Крон, время, разблокировка
Evgeniy
вообщем то я написал, как делают нормальные люди
Evgeniy
я выше написал вполне норм вариант без костылей
Maxim
В редакторе дергать что то, чтобы продлить время
Anonymous
RewriteRule ^index/$ index.php [QSA,L] правильно записано?
Maxim
Но если каждый раз время считать и решать давать доступ или нет, хорошо когда статей не много, а если Очень много, тут проще поле и на сервере разблокировать
Evgeniy
стандартный сбой по питанию и вот статья со статусом редактируется и надо костылять крон и тд
(;¬_¬)
неплохой выход
отличный выход,но требует некоторой ловкости рук
Evgeniy
у статьи добавляешь колонку int revision
Evgeniy
когда человек получает статью он получает эту колонку revision
(;¬_¬)
ну либо ты учишься, раз влез в такую непростую херню, либо страдаешь
Evgeniy
каждый раз как сохраняешь статью revision++
Evgeniy
если revision в бд не совпадает с revision что прислал клиент значит кто то обновил
(;¬_¬)
и что? ты так это говоришь словно тут каждый второй сидит и слюни на клавиатуру пускает
Evgeniy
и надо показывать diff обычный
Evgeniy
и человек резволит конфликт
Evgeniy
как от резолвит он уже уже шлет на сохранению ту ревизию по которой делал diff
Evgeniy
если они опять не совпадают значит кто то еще обновил и надо снова дифф делать
Maxim
Ревизии и разруливать редакторами, это когда люди адекватные, а тут их много и это стадо, а стадо не читает, а давит кнопки
Evgeniy
и так пока ревизии не совпадут
Evgeniy
потому что кто то ушел пить чай с открытой вкладкой
Evgeniy
или крики по офису всем выйти из редактирования главный редактор делает правки
Evgeniy
к сожалению ваши юз кейсы с реальностью не очень стыкуются
Anonymous
в mod_rewrite кто то шарит?
Anonymous
Подкиньте реальные примеры, где можно юзать трейты и интерфейсы
Evgeniy
трейты в тех местах где большинство юзает наследование
Evgeniy
интерфейсы ну например есть штука которая сохраняет текст и сохранять она может в фаил или разные бд
Evgeniy
соответственно для сохранения делаешь ` interface Driver { public function save(string $content); } class FIle implements Driver { public function __construct(string $fileName) {} public function save(string $content) { file_put_contents($this->fileName, $content); } } Class Mysql implements Driver ( public function __construct(PDO $fileName) {} public function save($content) { $this->pdo // сохраняем в бд } }
Evgeniy
ну и юзать это в другом классе
Evgeniy
class Document { public function__construct (Driver $driver){} public function save(string $content){ $this->driver->save($content); } $document = new Document (new File('test')) ;// при желание можно передавать инстанс любого объекта что реализует Driver $document->save('hello world'); // мы здесь не знаем куда сохраняем это документ да и нам пофиг что в бд (mysql, pgsql, mssql) что в mongo, redis, и тд что в файлики
Evgeniy
чтобы подключить новое хранилище, надо лишь реализовать интерфейс Driver и передавать его в те объекты где надо сохранять в него
Evgeniy
пример использования интерфейса
Dmitriy
кто то сейчас гит переизобретет в бд
к слову это норм практика =)
Evgeniy
я нормальный пример привел с ревизиями, оно чуть поизящнее и по проще гита
Evgeniy
за счет централизации, которой нету в git
Maxim
Ревизии есть в ONLYOFFICE, но там есть два режима блокировка и совместное редактирование)
Maxim
А ревизии используются потом для дифов по версии документов, что и когдатдобавляли
Anonymous
Спасибо
Evgeniy
вот например есть документ 1
Evgeniy
и есть 2 пользователя ты и я
Anonymous
А в гугол как реализованно? Там же вроде есть совместное редактирование
Anonymous
и есть 2 пользователя ты и я
У одного пики точены...))0
Dmitriy
я нормальный пример привел с ревизиями, оно чуть поизящнее и по проще гита
переизобретаем велосипеды ? уже давно есть стандартные подходы
Dmitriy
SCDs
Dmitriy
Slowly changing dimension
Anonymous
Почему просто не лочить ресурс, а потом убивать сессию, если чувак не редачил что-то более эн минут
Evgeniy
Slowly changing dimension
оно базируется на атрибутах
Evgeniy
а тут речь о тексте