ProfiPHPProfiPHP
Категория: Поддержка 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 = '';
$array_archive = array( );
$dir = glob( $_SERVER['DOCUMENT_ROOT'].'/content/infopagedb/*.dat' );
foreach ( $dir as $thisName )
{
@chmod( $thisName, 0644 );
$array_filedb = file( $thisName );
$row = unserialize( $array_filedb[0] );
$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( $src, PATHINFO_EXTENSION ), array( 'zip', 'rar' ) ) ) {
$array_archive[ ] = parse_url( $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 );
$content = explode( '<!-- OUR_content -->', $data );
preg_match_all( '#<a [^>]*href="(.*)"[^>]*>#Ui', str_replace( array( "|slash|", "|quotes|" ), array( "\\", "\"" ), $content[1] ), $matches );
foreach ( $matches[1] as $src )
{
if ( in_array( pathinfo( $src, PATHINFO_EXTENSION ), array( 'zip', 'rar' ) ) ) {
$array_archive[ ] = parse_url( $src, PHP_URL_PATH );
}
}
}
$all_filesize = 0;
$num = 1;
function scan_dir( $path )
{
global $all_filesize, $array_archive, $result, $num;
if ( $content_scan_dir = glob( $path.'/*') )
{
foreach ( $content_scan_dir as $object )
{
if ( is_dir( $object ) ) {
scan_dir( $object );
}
else {
@chmod( $object, 0644 );
if ( in_array( pathinfo( $object, PATHINFO_EXTENSION ), array( 'zip', 'rar' ) ) ) {
if ( ! in_array( str_replace( $_SERVER['DOCUMENT_ROOT'], '', $object ), $array_archive ) ) {
$all_filesize = $all_filesize + filesize( $object );
$result .= '
<tr>
<td>'.$num++.'</td>
<td>'.str_replace( $_SERVER['DOCUMENT_ROOT'], '', $object ).'</td>
<td>'.get_size( filesize( $object ) ).'</td>
</tr>';
}
}
}
}
}
}
scan_dir( $_SERVER['DOCUMENT_ROOT'] );
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( $all_filesize ).'</td>
</table>';
}
?>
Если вы хотите удалить неиспользованные файлы, необходимо изменить участок кода:
if ( ! in_array( str_replace( $_SERVER['DOCUMENT_ROOT'], '', $object ), $array_archive ) ) {
$all_filesize = $all_filesize + filesize( $object );
$result .= '
<tr>
<td>'.$num++.'</td>
<td>'.str_replace( $_SERVER['DOCUMENT_ROOT'], '', $object ).'</td>
<td>'.get_size( filesize( $object ) ).'</td>
</tr>';
}
на:
if ( ! in_array( str_replace( $_SERVER['DOCUMENT_ROOT'], '', $object ), $array_archive ) ) {
unlink( $object );
}

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

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