ProfiPHPProfiPHP
  1. Главная
  2. Поддержка OUR-CMS
  3. Поиск неиспользованных архивов на сайте OUR-CMS

Поиск неиспользованных архивов на сайте OUR-CMS

С помощью поиска неиспользованных архивов на сайте можно найти и удалить ненужные сжатые файлы в системе управления OUR-CMS.

Может настать тот момент, когда необходимо почистить сайт от лишних загруженных архивов. Сделать это можно использовав данный скрипт, который отобразит, и, при необходимости, удалит все неиспользованные архивы.

Для установки достаточно скопировать содержимое архива Unused_archives.php в корень сайта и запустить скрипт:
http://yousite/unused_archives.php
Содержимое файла:
<?php
/***************************/
/*** Поиск битых архивов ***/
/***************************/
function get_size($bytes) {
if ($bytes < 1000 * 1024) {
return number_format($bytes / 1024, 2) . " KB";
} elseif ($bytes < 1000 * 1048576) {
return number_format($bytes / 1048576, 2) . " MB";
} elseif ($bytes < 1000 * 1073741824) {
return number_format($bytes / 1073741824, 2) . " GB";
} else {
return number_format($bytes / 1099511627776, 2) . " TB";
}
}
$result = '';

// Массив существующих архивов
$arrayArchiveExists = array();

// Ищем все ссылки в блогах
$dir = glob($_SERVER['DOCUMENT_ROOT'].'/content/infopagedb/*.dat');
foreach ($dir as $thisName) {
@chmod($thisName, 0644);
$array_filedb = file($thisName);
$count = count($array_filedb);
for ($i = 1; $i < $count; $i++) {
if (trim($array_filedb[$i]) != '') {
$messold = unserialize($array_filedb[$i]);
preg_match_all('#<a [^>]*href="(.*)"[^>]*>#Ui', str_replace(array("|slash|", "|quotes|"), array("\\", "\""), $messold['extra']), $matches);
foreach ($matches[1] as $src) {
if (in_array(pathinfo(trim($src), PATHINFO_EXTENSION), array('zip', 'rar'))) {
$arrayArchiveExists[] = parse_url(trim($src), PHP_URL_PATH);
}
}
}
}
}
// Ищем все ссылки в статических файлах
$dir = glob($_SERVER['DOCUMENT_ROOT'].'/content/pagedb/*.dat');
foreach ($dir as $thisName) {
if ($thisName == $_SERVER['DOCUMENT_ROOT'].'/content/pagedb/404.dat') continue;
@chmod($thisName, 0644);
$fopendb = fopen($thisName, 'r');
flock($fopendb, LOCK_SH);
$data = fread($fopendb, filesize($thisName));
flock($fopendb, LOCK_UN);
fclose($fopendb);
list(, $content) = array_map('trim', explode("<!-- OUR_content -->", $data));
preg_match_all('#<a [^>]*href="(.*)"[^>]*>#Ui', str_replace(array("|slash|", "|quotes|"), array("\\", "\""), $content), $matches);
foreach ($matches[1] as $src) {
if (in_array(pathinfo(trim($src), PATHINFO_EXTENSION), array('zip', 'rar'))) {
$arrayArchiveExists[] = parse_url(trim($src), PHP_URL_PATH);
}
}
}
// Проходим по всем архивам
function findArchive($path) {
global $allSize, $arrayArchiveExists, $result, $num;
if ($content_findArchive = glob($path.'/*')) {
foreach ($content_findArchive as $object) {
if (is_dir($object)) {
findArchive($object);
} else {
@chmod($object, 0644);
if (in_array(pathinfo($object, PATHINFO_EXTENSION), array('zip', 'rar'))) {
if (!in_array(str_replace($_SERVER['DOCUMENT_ROOT'], '', $object), $arrayArchiveExists)) {
$allSize += filesize($object);
$result .= '
<tr>
<td>'.(!isset($num) ? $num = 1 : ++$num).'</td>
<td>'.str_replace($_SERVER['DOCUMENT_ROOT'], '', $object).'</td>
<td>'.get_size(filesize($object)).'</td>
</tr>';
// unlink($object);
}
}
}
}
}
}
// Выполняем функцию
findArchive($_SERVER['DOCUMENT_ROOT'].'/userfiles/file');
// Выводим результат
echo '<h1>Поиск неиспользованных архивов</h2>';
if (empty($result)) {
echo 'Нет неиспользованных архивов!';
} else {
echo '
<table border="1">
<tr>
<td><b>№</b></td>
<td><b>Архив</b></td>
<td><b>Размер</b></td>
</tr>
'.$result.'
<tr>
<td>Общий размер</td>
<td>'.get_size($allSize).'</td>
</table>';
}
Если вы хотите удалить неиспользованные файлы, необходимо раскоментируйте 75 строку:
// unlink($object);

Добавить комментарий

Имя:
Текст комментария: