Допустим, на сайт ежедневно тоннами выгружают кучу разных файлов на разные сервера. Что-бы файлы не повторялись, перед загрузкой на сервер, надо сверять файл с уже существующими файлами на всех серверах. Сверять сами файлы будет слишком долго, так-как, повторюсь, ежедневно загружаются тонны новых файлов. Сверять хеш этих файлов будет глупо, так-как хеш разных файлов может быть одинаковым и программа решит, что это тот-же самый файл и не допустит его загрузку.
Решение: к хеш-сумме добавлять размер файла в байтах в шестнадцатеричном исчислении.
Вариант, делать загрузку в каталоги типа год/месяц/день/час/минуты/милисекунда/ и там уже дежать его хешем. можно и имя файла держать как (d_m_Y_H_i_s).enc(bin).ascii и уже прилеплять имя файла, т.е. впереди имени будет двоичная маска даты, типа дата_имя(хеш?).ext
Вариантов тонна, чем держать все в одном каталоге с ориентиром на хеш и размер
mramor: Я сделал что-то вроде CMS (на самом деле я не знаю как это называется) и теперь пишу расширения (это я тоже не знаю как правильно называть).
Можете почитать как с ней работать: woonem.tk/readme.txt
Я написал пока что 5 расширений:
system.zip
adwert.zip
holiday.zip
feedback.zip
projects.zip
Разрабатываю:
account.zip
auth.zip
settings.zip
и еще несколько.
Дочерним расширением для расширения Account является Storage. Вопрос относится к нему.
mramor: я знал что меня об этом спросят. и ответ таков:
я делаю движок не только для себя и возможно из десяти тысяч будущих пользователей моего движка несколько обнаружат проблему и еще: я привык делать всё совершенным. Допустим, я бы не стал вместо цикла писать кучу строк повторяющегося кода в надежде на то, что количество обрабатываемой информации в этом псевдо-цикле не превысит кол-во повторений этого кода. Думаю, вы поняли о чем я.
Вадим Егоров: Тогда могу пожелать только удачной разработки.
Еще идея, подмотренная в одном проекте: перед помещением файла в каталог загрузки проверяется есть ли такой файл, и если есть, то проверяется есть ли файл имя-номер.расширение. и так меняется номер в цикле, пока не дойдет до отсутствия файла, и после помещают под нужным файл-номер
mramor: перед помещением файла в каталог загрузки проверяется есть ли такой файл, и если есть, то проверяется есть ли файл имя-номер.расширение - вы имели в виду "перед отправлением файла на сервер, он сопоставляется с каждым или проверяется, есть ли файл с таким-же именем и расширением"? Честно говоря вы не очень понятно обьяснили
Вадим Егоров: допустим , есть файл в каталоге: dump.sql , вы грузите на ресурс файл с точно таким же названием, перед тем как поместить файл в каталог загрузки - он находится как временный где-нибудь в /tmp (это стандартный механизм, путь разве что может быть инным, не суть), вот перед копированием в каталог загрузки вы делаете:
if( file_exists($filename))
Если там уже есть dump.sql , то врубаем цикл есть ли там dump-1.sql, dump-2.sql и тд. если нет dump-N.sql, то сохраняем под именем dump-N.sql
Оказывается, то что я вам описал называется: lurkmore.to/_/1806#mws_upT1Sjm
(Допустим, я бы не стал вместо цикла писать кучу строк повторяющегося кода в надежде на то, что количество обрабатываемой информации в этом псевдо-цикле не превысит кол-во повторений этого кода. Думаю, вы поняли о чем я.)