Удаление ненужных компонентов Битрикс
Продолжаю чистить ядро от ненужного мне кода, на этот раз под нож попали стандартные компоненты.
В прошлый раз удалял модули и это дало значительный результат.
Код ниже помещает компоненты с названием из массива $arUnlinkComponents в архив, после удаляет сами компоненты. Бездумно выполнять код нельзя. Перед выполнением сделайте резервную копию.
// Помещаем в архив "ненужные" компоненты $zipPath = $_SERVER["DOCUMENT_ROOT"].'/bitrix/components/bitrix/unlink-components.zip'; if (file_exists($zipPath)) { // Удаляем файл перед созданием архива unlink($zipPath); } $zip = new ZipArchive(); $zip->open($zipPath, ZipArchive::CREATE); $arUnlinkComponents = array( 'advertising.', 'app.', 'b24connector.', 'bitrixcloud.', 'bizproc.', 'blog', 'calendar.', 'catalog', 'currency.', 'desktop', 'eshop.', 'event_list', 'form', 'forum', 'furniture.', 'highloadblock.', 'idea', 'im.', 'infoportal.', 'landing.', 'learning.', 'lists', 'mail.', 'map.', 'messageservice.', 'mobile.', 'mobileapp.', 'photo', 'photogallery', 'pull.', 'report.', 'rest.', 'sale.', 'security.', 'sender.', 'seo.', 'socialnetwork', 'spotlight', 'statistic.', 'stssync.', 'support.', 'webservice.', 'wiki' ); foreach (array("/local/components/bitrix", "/bitrix/components/bitrix") as $folder) { $handle = @opendir($_SERVER["DOCUMENT_ROOT"].$folder); if ($handle) { while (false !== ($dir = readdir($handle))) { if (!isset($arComponents[$dir]) && is_dir($_SERVER["DOCUMENT_ROOT"].$folder."/".$dir) && $dir != "." && $dir != "..") { foreach ($arUnlinkComponents as $name) { if (strpos($dir, $name) === 0) { $componentDir = $_SERVER["DOCUMENT_ROOT"].$folder."/".$dir; $arComponents[$dir]["COMPONENT_DIR"] = $componentDir; $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($componentDir), RecursiveIteratorIterator::LEAVES_ONLY ); foreach ($files as $name => $file) { if (!$file->isDir()) { // Пропускаем папки (будут добавлены автоматически) $filePath = $file->getRealPath(); $relativePath = $dir.'/'.substr($filePath, strlen($componentDir) + 1); // Путь от папки компонента $zip->addFile($file->getRealPath(), $relativePath); // Добавляем компонент в архив } } } } } } closedir($handle); } } $zip->close(); // Удаляем папку компонента foreach ($arComponents as $arComponent) { if ($arComponent["COMPONENT_DIR"]) { $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($arComponent["COMPONENT_DIR"]), RecursiveIteratorIterator::CHILD_FIRST ); foreach ($iterator as $path) { if ($path->isDir()) { rmdir((string)$path); } else { unlink((string)$path); } } rmdir($arComponent["COMPONENT_DIR"]); } }
Результаты:
- Кол-во файлов на сайте уменьшилось с 48к до 32к
- Размер бекапа уменьшился с 259Мб до 210Мб
- Ошибок нет, система работает стабильно
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.