Одновременное удаление картинки из базы и директории.

Boris

Новичок
Скажите, а что делают в случае если,
1) Этап - удаление файла
2)Этап- удаление записи из бд
Этап 1 удался, а Этап 2 нет.
Получается что картинки уже нет а запись есть.
Просто для себя искал инфу и наткнулся на эту тему, новую открывать не стал
 

fixxxer

К.О.
Партнер клуба
поменять этапы местами

лучше пусть лишний файл валяется, чем будет битая ссылка.
 

Boris

Новичок
Дело в том, что я одно время думал на каждого зарегистрированного пользователя открывать свою директорию, что позволило бы проще отслеживать такого рода вещи, но куча директорий не вариант поэтому сейчас и пытаюсь найти все варианты как по максимуму продумать решение подобных вещей.
Простите может совсем уж тупой вопрос, но лог-файл - есть что-то готовое или надо самомому создавать такого рода файл и записывать в него действие пользователей?
 

Фанат

oncle terrible
Команда форума
при чем здесь действия пользователей?
Ошибка запроса - это ошибка приложения. Ошибки приложения должны логироваться в обязательном порядке.
Обычно это делается еррор хендлером. Но в самом простом случае говнокода на mysql надо любой запрос писать
PHP:
mysql_query($query) or trigger_error(mysql_error()."[$query]");
или кидать исключение.
 

Фанат

oncle terrible
Команда форума
Дело в том, что я одно время думал на каждого зарегистрированного пользователя открывать свою директорию, что позволило бы проще отслеживать такого рода вещи, но куча директорий не вариант поэтому сейчас и пытаюсь найти все варианты как по максимуму продумать решение подобных вещей.
Не понял.
Ни почему позволит проще отслеживать, ни почему много директорий не вариант
 

Boris

Новичок
при чем здесь действия пользователей?
Ошибка запроса - это ошибка приложения. Ошибки приложения должны логироваться в обязательном порядке.
Обычно это делается еррор хендлером. Но в самом простом случае говнокода на mysql надо любой запрос писать
PHP:
mysql_query($query) or trigger_error(mysql_error()."[$query]");
или кидать исключение.
Честно говоря, я себе представлял это таким образом:
допустим удаление картинки, удаление по каким то причинам не произошло, ошибка записывается в txt файл или отправляется мне email .
так же. если какое-то действие с бд. Вы сказали про log , очень интересно, спасибо, а не могли бы Вы дать полезную ссылку на то как правильно сделать отслеживание ошибок, чтобы потом в ручном режиме исправлять их, например ручками удалить файл.
 

Boris

Новичок
Не понял.
Ни почему позволит проще отслеживать, ни почему много директорий не вариант
у каждого узера при регистрации создается своя лиректория-папка, куда в последствии записываются его картинки, в случае если происходит какой-то сбой, то знаешь что у каждого есть своя папка и проще ориентироваться. Но если юзеров будет 5000 то 5000 папок это не очень хорошо.
 

Фанат

oncle terrible
Команда форума
емейл от ошибок лопнет.
поломается какая-то одна штука - типа права на каталог слетят - и каждый запрос к сайту будет генерировать десяток писем.

Наблюдение за логами - совершенно стандартная для веб-мастера и программиста процедура. консоль с логами - самая привычная деталь десктопа после редактора.
ссылок, честно говоря, не знаю. В юниксе просто открываешь консоль, пишешь
PHP:
tail -f /var/log/httpd_error.log
и наслаждаешься
у каждого есть своя папка и проще ориентироваться.
не понимаю. есть имя картинки - по нему и надо ориентироваться.
5000 папок это не очень хорошо.
а 50000 файлов - хорошо разве? Делить по папкам все равно придется, такая единица деления, как папка юзера вполне подойдет.
чтобы не было в одной папке все 5000 делай по 100, отрезая первые две цифры.
PHP:
/10/1050/
/13/1351/
/13/1388/
/49/4930/
 

Boris

Новичок
емейл от ошибок лопнет.
поломается какая-то одна штука - типа права на каталог слетят - и каждый запрос к сайту будет генерировать десяток писем.

Наблюдение за логами - совершенно стандартная для веб-мастера и программиста процедура. консоль с логами - самая привычная деталь десктопа после редактора.
ссылок, честно говоря, не знаю. В юниксе просто открываешь консоль, пишешь
PHP:
tail -f /var/log/httpd_error.log
и наслаждаешься

не понимаю. есть имя картинки - по нему и надо ориентироваться.

а 50000 файлов - хорошо разве? Делить по папкам все равно придется, такая единица деления, как папка юзера вполне подойдет.
чтобы не было в одной папке все 5000 делай по 100, отрезая первые две цифры.
PHP:
/10/1050/
/13/1351/
/13/1388/
/49/4930/
К сожалению юниксом не могу воспользоваться. Сайт находится на арендуемом хосте.
Вы только скажите так правильно? или уже есть готовые решения.
PHP:
if(unlink($row_select_images['url_small_img']) and unlink($row_select_images['url_big_img']))
{
}
else
{
// Здесь я создаю сообщение о том что в такое-то время, пользователь такой-то, пытался удалить картинки такие-то такие-то, и это сообщение допустим записываю в файл error_messages.txt. каждый раз захожу и проверяю этот файл, и если в данном примере большая фотка удалена а маленькая нет то я в ручную ее удалю.
}
 

Фанат

oncle terrible
Команда форума
Сайт находится на арендуемом хосте.
Это как раз юникс и есть.
Есть, конечно, тупые хосты, которые дают доступ к логу ошибок через браузер, но таких, чтобы вообще не давали - я не видел.

Специально создавать никакие сообщения не надо. Если произойдет ошибка при анлинк - она сама попадет в лог. В этом-то и суть логирования ошибок.
 

Boris

Новичок
Большое спасибо, уже связался с хостом и изучаю Управление логами веб-сервера. Вот уж точно, чем глубже влез, тем дальше вылез. Учиться и учиться!
 

Boris

Новичок
Это как раз юникс и есть.
Есть, конечно, тупые хосты, которые дают доступ к логу ошибок через браузер, но таких, чтобы вообще не давали - я не видел.

Специально создавать никакие сообщения не надо. Если произойдет ошибка при анлинк - она сама попадет в лог. В этом-то и суть логирования ошибок.
Фанат скажите а в каком виде попадает ошибка при попытке удаления файла? Если ошибка в виде только номера ошибки и сообщения о том что не удалось удалить файл без его названия, это же совсем мне не поможет в последствии искать такие файлы и удалять их в ручную. Поговорил с представителем хостинга, описал пример двух картинок, маленькая удалилась большая нет, как узнать и потом удалить, ответили что в логах такой инфы нет и что на такие случае стоит писать свой журнал
 

Фанат

oncle terrible
Команда форума
ерунду они говорят.
попробуй удалить заведомо несуществующую картинку, и посмотри

Если ошибки РНР не попадают в лог ошибок, то надо настроить, чтобы попадали.
для начала надо попробовать в файле настроек написать
PHP:
ini_set('log_errors',1);
 

Boris

Новичок
ерунду они говорят.
попробуй удалить заведомо несуществующую картинку, и посмотри

Если ошибки РНР не попадают в лог ошибок, то надо настроить, чтобы попадали.
для начала надо попробовать в файле настроек написать
PHP:
ini_set('log_errors',1);
да еще сказали что доступ к журналу только через AWstat
 
Сверху