Боремся за место на диске
На выходных досмотрелся что движок не удаляет загруженные на сервер оригиналы картинок в фотосетах, аватарках пользователя и аватарках блогов. Учитывая что по умолчанию для фотосета выставлено 6Мб на картинку и 30 картинок для загрузки это будет 6 х 30 = 180Мб на один фотосет это конечно ничто для хостинга в 3Тб, но для 2Гб хостинга это всего 11 фотосетов, ужос!!!
Попробовал поставить плагин пылесос, думал он поможет, но увы там этого не реализовано.
Пришлось лезть в исходники. Вобщем вот что получилось (для LS 0.5.1) (Для лентяев скачать готовое):
Для фотосета файл: classes/actions/ActionPhotoset.class.php
Ищем. После 287 строки, после кода:
Вставляем код
Для аватарок файл: classes/actions/ActionSettings.class.php
Ищем. После 298 строки, после кода:
Вставляем код
Для аватарок блогов файл: classes/actions/ActionBlog.class.php
Ищем. После 212 строки, после кода:
Вставляем код. Вот здесь уже не нашел переменной с путем закачанной картинки и применил регулярку.
Ищем. После ! В оригинале!318 строки, после кода:
Вставляем код
Ну вот и все, теперь оригиналы картинок удаляются сразу после загрузки и ресайза. Надеюсь кому-нибудь пригодиться.
Попробовал поставить плагин пылесос, думал он поможет, но увы там этого не реализовано.
Пришлось лезть в исходники. Вобщем вот что получилось (для LS 0.5.1) (Для лентяев скачать готовое):
Для фотосета файл: classes/actions/ActionPhotoset.class.php
Ищем. После 287 строки, после кода:
} else {
$this->Message_AddError($this->Lang_Get('system_error'), $this->Lang_Get('error'));
}
Вставляем код
@unlink($this->Image_GetServerPath($sFile));
Эта строка удаляет закачанную картинкуДля аватарок файл: classes/actions/ActionSettings.class.php
Ищем. После 298 строки, после кода:
} else {
$bError=true;
$this->Message_AddError($this->Lang_Get('settings_profile_avatar_error'),$this->Lang_Get('error'));
}
Вставляем код
@unlink($this->Image_GetServerPath($this->oUserCurrent->getProfileAvatarPath($_FILES['avatar']['tmp_name'])));
Эта строка удаляет закачанную картинкуДля аватарок блогов файл: classes/actions/ActionBlog.class.php
Ищем. После 212 строки, после кода:
} else {
$this->Message_AddError($this->Lang_Get('blog_create_avatar_error'),$this->Lang_Get('error'));
return false;
}
Вставляем код. Вот здесь уже не нашел переменной с путем закачанной картинки и применил регулярку.
$full_patch = preg_replace('/\_[\d]{1,6}x[\d]{1,6}(\..*?){1,6}$/','$1',$sPath);
@unlink($this->Image_GetServerPath($full_patch));
Эти строки удаляют закачанную картинкуИщем. После ! В оригинале!318 строки, после кода:
} else {
$this->Message_AddError($this->Lang_Get('blog_create_avatar_error'),$this->Lang_Get('error'));
return false;
}
Вставляем код
$full_patch = preg_replace('/\_[\d]{1,6}x[\d]{1,6}(\..*?){1,6}$/','$1',$sPath);
@unlink($this->Image_GetServerPath($full_patch));
Эти строки удаляют закачанную картинкуНу вот и все, теперь оригиналы картинок удаляются сразу после загрузки и ресайза. Надеюсь кому-нибудь пригодиться.
32 комментария
Мне что-то подсказывает, что он уже не нужен и должен быть удален (не плагином, а движком)
Внезапно вас кусает муха и вы понимаете что вас не устраивает размер 100 на 100 и вам нужно например 350 на 250.
Ваши действия? :)
20 гигов дропбокса — это 110 фотосетов. Кроме того, у дропбокса есть ограничения на количество одновременных просмотров для паблика и на больших ресурсах вы эту картинку рискуете не увидеть например.
да и например amazonS3 не так уж дорого стоит.
в фотосете размера превью выставляется в админе, т.е нужно предварительно поменять на новый размер. А как дальше воспользоваться оригиналами, которые на сервере лежат?
P.S.
И потом, если взять рабочий сайт, то очевидно что при большом количестве материалов меня уже муха будет кусать осторожнее и я не буду метаться от размера к размеру.
я больше вижу это как опцию в конфиге «удалять оригиналы».
На счет картинок, кстати, фейсбук, вконтакты и другие highload-проекты вообще делают тройное дублирование всей загружаемой инфы на трех разных серверах, чтобы, в случае выхода из строя одного — инфа не пропадала. Обычным «смертным» людям вроде меня, у которых винчестеры небольшие, очень важно следить за местом. Вот прикиньте такую схему — регаешься у кого-то на сайте под управлением ЛС и начинаешь делать фотосеты по максимуму заливая фотки и после сохранять в черновики. Админ далеко не сразу поймет, куда же подевалось все свободное место..)
А и еще важна поддержка amason s3 ))))
тож все храню на амазон с3 ) счастье!!!
Есть плагин, но он только на почту вроде бы отправляет.
Да было бы класссссно такой плагинчик… Эх знаний в пхп бы побольше.
Измените значение настроек «module.user.avatar_size» и «module.blog.avatar_size»