Удаление ненужных компонентов Битрикс

70
Алексей,
Удаление ненужных компонентов Битрикс

Продолжаю чистить ядро от ненужного мне кода, на этот раз под нож попали стандартные компоненты.

В прошлый раз удалял модули и это дало значительный результат.

Код ниже помещает компоненты с названием из массива $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Мб
  • Ошибок нет, система работает стабильно
Опубликовано 8 Октября 2019 | Обновлено 9 Октября 2019
чистка, готовый код

Возврат к списку

Похожие статьи
Битрикс, удаление ненужных модулей 0
Если у Вас одна из старших редакций 1С-Битрикс, неизбежно будут модули и компоненты которые Вы не ис...
Читать дальше »
Алексей,
Комментарии