Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> транзакции в пхп 
:(
    Опции темы
getme
Дата 18.1.2009, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 12.9.2008

Репутация: нет
Всего: -2



Мне нужен механизм,  некоторое подобие транзакций в mysql только для работы с файловой структурой

что то вроде

Код

<?php
try {
  // ulink..
  // rmdir
 // mkdir  
} catch( Exception $e) {
  //  otkat
}


если папка не создалась или не удалилась и т.д то все предидущие операции надо откатить.

Подскажите!
PM MAIL   Вверх
bars80080
Дата 18.1.2009, 20:22 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



а чем if() {} else {} не устраивает?
на любую операцию можно поставить проверку, к примеру на существование файла file_exists(), и продолжить выполнение если успешно
PM MAIL WWW   Вверх
krundetz
Дата 18.1.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



getme, интересно узнать зачем? Обычно транзакции ставят там где работают с финансовыми данными(биллинговые системы), если ты тоже собираешься делать систему работающею с финансами то не скупиться и купи хостинг который позволяющий работать с базами данных.
По реализации могу посоветовать посмотреть как она работает в СУБД, благо многие из них OpenSource, ибо ты хочешь делать то что уже есть в них.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
getme
Дата 19.1.2009, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 12.9.2008

Репутация: нет
Всего: -2



Цитата(bars80080 @ 18.1.2009,  20:22)
а чем if() {} else {} не устраивает?
на любую операцию можно поставить проверку, к примеру на существование файла file_exists(), и продолжить выполнение если успешно

вложенностью блоков

Добавлено через 8 минут
Цитата(krundetz @ 18.1.2009,  22:44)
getme, интересно узнать зачем? Обычно транзакции ставят там где работают с финансовыми данными(биллинговые системы), если ты тоже собираешься делать систему работающею с финансами то не скупиться и купи хостинг который позволяющий работать с базами данных.
По реализации могу посоветовать посмотреть как она работает в СУБД, благо многие из них OpenSource, ибо ты хочешь делать то что уже есть в них.

зачем? хмм помоему все очевидно, для целостности данных. 
я говорю про работу с файловой структурой, вы мне про покупку хостинга и БД

ладно пошел в гугл


PM MAIL   Вверх
skyboy
Дата 19.1.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



не, очень навряд ли: подобное если и писать, то под свои потребности и ограничения. универсальное будет очень прожорливым в отношении ресурсов(например, две параллельные транзакции пишут в один файл - до commit'a им надо отдавать разное содержимое, соответственно, надо хранить минимум две копии - полный или в виде патча - файла) и крайне нестабильными(если не реализовать процесс бекапа списка непримененных действий на диске, что дает допнагрузку). при написании "под конкретную" задачу части накладок можно избежать(например, если заранее ограничить "транзакцию" только операциями переименования/удаления, но не записи в файл), но при этом теряется гибкость.
или же, если речь идет о небольших объемах "файлов", то вместо файлов можно работать с любой СУБД, поддерживающей транзакции.
PM MAIL   Вверх
krundetz
Дата 19.1.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



getme, целостность данных, и что ты под нею понимаешь? Транзакции конечно можно считать инструментом соблюдения целостности данных, но разрабатывались они для соблюдение корректности данных(я не зря упомянул финансовые приложения). В твоем же случае скорее всего подойдет простая блокировка файла. Опиши подробнее задачу тогда понятнее будет, и получишь более конкретный ответ.

Это сообщение отредактировал(а) krundetz - 19.1.2009, 20:15


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MuToGeN
Дата 23.1.2009, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 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!
PM MAIL ICQ   Вверх
IZ@TOP
Дата 28.1.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Вообще, это довольно насущный вопрос - транзакции и файловая система, в особенности, когда файловая система завязана на данных в субд - откатилась транзакция в базе - хорошо бы откатить и изменения на диске. 
У нас на фотохостинге для этого используется свой класс, который регистрирует все операции с файловой системой и откатывает их в случае необходимости. Однако, это полумера. Лучше всего использовать для этих целей транзакционную файловую сиестему - гугль в помощь.

Добавлено @ 16:31
Цитата(skyboy @  19.1.2009,  17:09 Найти цитируемый пост)
не, очень навряд ли: подобное если и писать, то под свои потребности и ограничения. универсальное будет очень прожорливым в отношении ресурсов(например, две параллельные транзакции пишут в один файл - до commit'a им надо отдавать разное содержимое, соответственно, надо хранить минимум две копии - полный или в виде патча - файла) и крайне нестабильными(если не реализовать процесс бекапа списка непримененных действий на диске, что дает допнагрузку). при написании "под конкретную" задачу части накладок можно избежать(например, если заранее ограничить "транзакцию" только операциями переименования/удаления, но не записи в файл), но при этом теряется гибкость.
или же, если речь идет о небольших объемах "файлов", то вместо файлов можно работать с любой СУБД, поддерживающей транзакции. 


Только я немного не представляю, для чего необходимо в БОЛЬШИЕ файлы писать нескольким потокам одновременно. Если речь идет о документообороте - для этого существует множество систем контроля версий, в том числе и на PHP.
Все зависит от задачи.

Это сообщение отредактировал(а) IZ@TOP - 28.1.2009, 16:33


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
nerezus
Дата 30.1.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Транзакции будут в виде отдельного модуля(сразу их умельцы сделают) как только появятся ФС, их поддерживающие.

Так что это вопрос не к PHP, а к ФС.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0893 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.