Контроль дубликатов

Урок 107 из 258
Автор: Роберт Басыров
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
2 из 5
Просмотров: 37128
Дата изменения: 27.11.2024
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Ограничений нет

Экономим место на дублях

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

Для экономии места рекомендуется использовать контроль дубликатов загружаемых файлов. В настройках Главного модуля В Административном разделе по пути: Настройки > Настройки продукта > Настройки модулей > Главный модуль , в секции Файлы есть опции:

По умолчанию эти опции включены.

Как работает этот механизм

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

Подробнее...
от его контента. Ориентировочно, на файл 100 Мб (настройка по умолчанию) уходит 0.2 - 0.3 секунды. Для облачных файлов ограничения по размеру нет, хэш считает облачное хранилище.

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

В работе механизма используется CFile::SaveFile(). Дополнительно, существует возможность явно добавить дубликат без физической загрузки с помощью:

 CFile::AddDuplicate(
   $FILE_ID
).

Где FILE_ID - идентификатор файла.

Примечание: Теоретически существует возможность, когда к сущности будет добавлен не тот файл, если совпал размер и md5. Но вероятность этого для отдельного сайта или портала исчезающе мала.


Нам жаль это слышать… Но мы постараемся быть лучше!

Мы благодарны Вам за помощь в улучшении документации.

Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас
Курсы разработаны в компании «1С-Битрикс»