30.09.2017 09:21:27 am
Данный сценарий находит фотографии, которые не записаны в БД (в таблице phpfox_photo), но есть на сервере (в директории file/pic/photo, включая все подкаталоги). Такие файлы я называю мусором и не приемлю, когда этот мусор есть у меня. Если вы такого же мнения, как и я, то этот инструмент может оказаться вам полезным. Сам код инструмента:
Сохраняем данный код в фале (например: find_debris.php), заливаем в корень сайта и запускаем сценарий, перейдя по адресу site/find_debris.php, на экране появится список всех фотографий, которые не записаны в БД, например:
Те файлы, что найдет сценарий, можно удалить с сервера, так как они ни где не используются.
<?php
$dbhost = '';
$dbuser = '';
$dbpasswd = '';
$dbname = '';
$connect = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
if (!$connect)
{
exit(mysqli_connect_error($connect));
}
function ScannerContent($dir)
{
$list = array();
if (is_dir($dir))
{
if ($handle = opendir($dir))
{
chdir($dir);
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..' && $file != 'index.html')
{
if (is_dir($file))
{
$subdir = ScannerContent($file);
foreach ($subdir as $part)
{
$list[] = $dir . '/' . $part;
}
}
else
{
$list[] = $dir . '/' . $file;
}
}
}
chdir('../');
}
closedir($handle);
}
return $list;
}
$dir = 'file/pic/photo';
$list = ScannerContent($dir);
$unique = array();
foreach ($list as $element)
{
$element = (strstr($element, $dir . '/')) ? (str_replace($dir . '/', '', $element)) : $element;
$element = (strstr($element, '_240')) ? (str_replace('_240', '', $element)) : $element;
$element = (strstr($element, '_500')) ? (str_replace('_500', '', $element)) : $element;
$element = (strstr($element, '_1024')) ? (str_replace('_1024', '', $element)) : $element;
$element = str_replace('.', '%s.', $element);
$unique[] = $element;
}
$unique = array_unique($unique);
$sql = 'SELECT destination
FROM phpfox_photo';
$r = mysqli_query($connect, $sql);
if (!$r)
{
exit(mysqli_error($connect));
}
else
{
$record = array();
while($row = mysqli_fetch_assoc($r))
{
$record[] = $row['destination'];
}
$diff = array_diff($unique, $record);
echo 'Всего файлов: ' . count($diff);
foreach ($diff as $file)
{
echo '<br />' . $file;
}
}
Сохраняем данный код в фале (например: find_debris.php), заливаем в корень сайта и запускаем сценарий, перейдя по адресу site/find_debris.php, на экране появится список всех фотографий, которые не записаны в БД, например:
Всего файлов: 2
f9028faec74be6ec9b852b0a542e2f39.jpg
2015/12/fc3cf452d3da8402bebb765225ce8c0e_1024.jpg
f9028faec74be6ec9b852b0a542e2f39.jpg
2015/12/fc3cf452d3da8402bebb765225ce8c0e_1024.jpg
Те файлы, что найдет сценарий, можно удалить с сервера, так как они ни где не используются.
- Жалоба