![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
getme |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 12.9.2008 Репутация: нет Всего: -2 |
Мне нужен механизм, некоторое подобие транзакций в mysql только для работы с файловой структурой
что то вроде
если папка не создалась или не удалилась и т.д то все предидущие операции надо откатить. Подскажите! |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 2 Всего: 315 |
а чем if() {} else {} не устраивает?
на любую операцию можно поставить проверку, к примеру на существование файла file_exists(), и продолжить выполнение если успешно |
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
getme, интересно узнать зачем? Обычно транзакции ставят там где работают с финансовыми данными(биллинговые системы), если ты тоже собираешься делать систему работающею с финансами то не скупиться и купи хостинг который позволяющий работать с базами данных.
По реализации могу посоветовать посмотреть как она работает в СУБД, благо многие из них OpenSource, ибо ты хочешь делать то что уже есть в них. |
|||
|
||||
getme |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 12.9.2008 Репутация: нет Всего: -2 |
вложенностью блоков Добавлено через 8 минут
зачем? хмм помоему все очевидно, для целостности данных. я говорю про работу с файловой структурой, вы мне про покупку хостинга и БД ладно пошел в гугл |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
не, очень навряд ли: подобное если и писать, то под свои потребности и ограничения. универсальное будет очень прожорливым в отношении ресурсов(например, две параллельные транзакции пишут в один файл - до commit'a им надо отдавать разное содержимое, соответственно, надо хранить минимум две копии - полный или в виде патча - файла) и крайне нестабильными(если не реализовать процесс бекапа списка непримененных действий на диске, что дает допнагрузку). при написании "под конкретную" задачу части накладок можно избежать(например, если заранее ограничить "транзакцию" только операциями переименования/удаления, но не записи в файл), но при этом теряется гибкость.
или же, если речь идет о небольших объемах "файлов", то вместо файлов можно работать с любой СУБД, поддерживающей транзакции. |
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
getme, целостность данных, и что ты под нею понимаешь? Транзакции конечно можно считать инструментом соблюдения целостности данных, но разрабатывались они для соблюдение корректности данных(я не зря упомянул финансовые приложения). В твоем же случае скорее всего подойдет простая блокировка файла. Опиши подробнее задачу тогда понятнее будет, и получишь более конкретный ответ.
Это сообщение отредактировал(а) krundetz - 19.1.2009, 20:15 |
|||
|
||||
MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 4 Всего: 32 |
Универсального не существует в природе, да и не может существовать. Сам когда-то искал.
Вывод: пишите что-то сами под свои конкретные задачи. -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
Вообще, это довольно насущный вопрос - транзакции и файловая система, в особенности, когда файловая система завязана на данных в субд - откатилась транзакция в базе - хорошо бы откатить и изменения на диске.
У нас на фотохостинге для этого используется свой класс, который регистрирует все операции с файловой системой и откатывает их в случае необходимости. Однако, это полумера. Лучше всего использовать для этих целей транзакционную файловую сиестему - гугль в помощь. Добавлено @ 16:31 Только я немного не представляю, для чего необходимо в БОЛЬШИЕ файлы писать нескольким потокам одновременно. Если речь идет о документообороте - для этого существует множество систем контроля версий, в том числе и на PHP. Все зависит от задачи. Это сообщение отредактировал(а) IZ@TOP - 28.1.2009, 16:33 -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Транзакции будут в виде отдельного модуля(сразу их умельцы сделают) как только появятся ФС, их поддерживающие.
Так что это вопрос не к PHP, а к ФС. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |