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

Форум PHP

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

 

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

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

тема: Создать безопасное копирование файла
 
 автор: roma67   (22.04.2012 в 20:22)   письмо автору
 
 

Есть файл с данными, который часто перезаписывается копированием на новый файл разными пользователями.
В новом файле каждый раз сохраняется информация от старого файла и добавляется информация от нового пользователя.
Одновременно могут производить перезапись файла копированием несколько пользователей.

Как предотвратить коллизии от совместных действий пользователей.

  Ответить  
 
 автор: cheops   (22.04.2012 в 21:11)   письмо автору
 
   для: roma67   (22.04.2012 в 20:22)
 

Перед редактированием файла снимайте хэш с его содержимого. После того, как пользователь отредактировал данные и хочет их записать, блокируйте файл по записи. Снова снимайте хэш - если он отличается, то сообщайте пользователю, что изменение невозможно, так как кто-то уже внес изменения. Если хэш тот же самый, то перезаписывайте содержимое файла. После чего снимайте блокировку с файла.

  Ответить  
 
 автор: roma67   (23.04.2012 в 16:42)   письмо автору
 
   для: cheops   (22.04.2012 в 21:11)
 

Про хэш я и не додул, я размеры файлов сравнивал, НО.
1. Я честно скажу, я не понимаю что такое хэш, так как каждый раз, разные люди по-разному объясняют, а стандарта, что-бы была форма, прототип, корректное определение - я не видел.
2. При блокировке файла по записи и перезаписи copy() выдает ошибку. Но тут я внимательно еще посмотрю.

  Ответить  
 
 автор: cheops   (23.04.2012 в 19:49)   письмо автору
 
   для: roma67   (23.04.2012 в 16:42)
 

Размер может не измениться, например, человек правит цифру. Хэш - это на пальцах "отпечатки пальцев" текста. Процедура получения последовательности символов, повторное применение которой к тому же тексту дает точно такую же последовательность. Есть хэши, которые не уникальны, т.е. разные тексты могут дать одну и ту же последовательность. Есть уникальные хэши, ни один текст не может дать такую же последовательность - у всех она уникальная. Для последнего случая можно использоваться алгоритм md5, который в PHP реализован в одноименной функции md5() - в качестве единственного параметра передаете ему текст, он возвращает - уникальный хэш.

  Ответить  
Rambler's Top100
вверх

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