Есть ответы на вопросы сертификации? Хочешь поделиться новостью о своем проекте? Тогда пиши нам!

Удаление несуществующих записей в таблице b_file

Удаление несуществующих записей в таблице b_file

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

Пример из жизни

Был один большой сайт, который включал публичный сайт и проработанную административную часть, где сотрудники компании выполняли различные действия. В один прекрасный момент было принято разделить этот проект на два отдельно живущих, на разных лицензиях и ядрах Битрикса. Работа по отделению - это отдельная история, но результатом стало, что часть данных в таблицах для одного из проектов стала не актуальной, как раз к таким и относились данные таблицы b_file (~20Mb). Теперь сам сниппет кода:

$oRes = \CFile::GetList(['ID' => 'ASC']);
while ($arFile = $oRes->Fetch()) {
    $sPath = $_SERVER['DOCUMENT_ROOT'] . '/upload/' . $arFile['SUBDIR'] . '/' . $arFile['FILE_NAME'];
    if (!file_exists($sPath)) {
        \CFile::Delete($arFile['ID']);
    }
}

Как видим, тут все просто и данный пример будет полезен больше новичкам в Битриксе.

 1526 Битрикс, Очистка базы данных, Сниппет, Новичку
17 июня 2017
Команда BXCert

Наша команда разрабатывает портал BXCert, а также занимается разработкой сайтов на CMS 1С-Битрикс. Все участники являются сертифицированными специалистами Bitrix.

Возможно Вам будет интересно

Комментарии