Code Monkey home page Code Monkey logo

bitrix-clear-upload's Introduction

bitrix-clear-upload

Скрипт для очистки каталога upload/iblock сайта на CMS 1С-Битрикс от неиспользуемых файлов (оставшихся после удаления элемента инфоблока).

Описание

Скрипт для очистки каталога upload/iblock от неиспользуемых файлов, которые могут оставаться после удаления элемента инфоблока и, особенно, многократных обменов с 1С.

Скрипт проверяет каждый файл в каталоге upload/iblock, есть ли он в таблице b_file и если его там нет выводит полный путь к нему на экран.

Возможные опции

--move-file=/путь: перемещает файл в указанную директорию с сохранением иерархии.

--delete-files: удаляет файл и каталог, в котором находился удаляемый файл (если он пуст).

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

Важное замечание про short_open_tag PHP

При использовании более-менее современных версий PHP (точно для версий 7+) при запуске скрипта из консоли вы вместо результата можете увидеть какой-то исходный код, завершающийся ошибкой

PHP Fatal error:  Uncaught Error: Call to a member function Query() on null in /var/www/bitrix-clear-upload/clear_upload.php:67
Stack trace:
#0 {main}
  thrown in /var/www/bitrix-clear-upload/clear_upload.php on line 67

В этом случае вам необходимо в конфигурации PHP (обычно php.ini), предназначенную для запуска PHP в консоли, включить опцию short_open_tag = On, т.к. в ядре Битрикса еще очень много кода, используюшего именно сокращенный вариант тэга, обозначающего начало php-кода.

Путь к php.ini на сервере вы можете узнать, выполнив в консоли команду:

$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc/php/7.3/cli
Loaded Configuration File => /etc/php/7.3/cli/php.ini

Изменять лучше не сам php.ini, а добавить в каталог (путь пишу для моего примера) /etc/php/7.3/cli/conf.d файл с именем 99-bitrix.ini и добавить в него следующее содержимое:

short_open_tag = On

После этого скрипт заработает и у вас :-)

Примеры использования

Получить список всех неиспользуемых файлов из каталога upload/iblock:

php clear_upload.php /var/www/example.com

Переместить все неиспользуемые файлы из каталога upload/iblock в папку /backup:

php clear_upload.php --move-files=/backup /var/www/example.com

Удалить все неиспользуемые файлы из каталога upload/iblock:

php clear_upload.php --delete-files /var/www/example.com

bitrix-clear-upload's People

Contributors

gmelikov avatar kuntashov avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.