Загрузка файлов ajax php, можно обойтись без сборщика мусора?
В общем пробую создать регистрацию и в ней загрузу аватара через ajax. Читал несколько статей и понял что если юзер будет загружать фото а потом ему что то не понравится и он передумает, и заного будет загружать картинку, и так раз за разом, пока его все не устроит, то на сервере останутся ненужные файлы этих изображений. Ну это пример, в дальнейшем я хочу сделать и загрузку нескольких изображений в галлерею. Так вот, я читал что есть какие то автоматические проверки и удаление этих ненужных файлов, но где найти или как их сделать я понятия не имею, читал на английском, с трудом кое что перевел, но не так чтобы разобраться, так как английский не на том уровне. На русскоязычных ресурсах ничего не нашел.
Можете помочь разобраться как эти удалящие скрипты поставить и настроить и где их найти, и можно ли вообще без них обойтись как нибудь?
В данном случае, можно обойтись без каких-то лишних телодвижений. Раз изображение аватара это уникальный файл, то можно и имя ему задать уникальное. Каждому последующему загружаемому файлу, задавать это же уникальное имя и он будет просто перезаписывать существующий. Кроме того, можно хранить аватар в самой БД, что так же исключит лишние накопления.
thehighhomie для галереи - удалять ручками. Объясню. Машине нужно "дать понять", что будет считаться неиспользуемым файлом. А по какому принципу это сделать, вы можете обрисовать? Думаю, что нет. Даже, если при каждом открытии изображения галереи, вы будете изменять время доступа и модификации файла, а потом ориентировать на это время, то где гарантия того, что не открывавшийся пару дней файл, действительно не используется в галереи. Может просто к нему не проявили интерес за этот промежуток времени.
Создаете временную папку. Все попадает туда. После некого подтверждения фото от туда попадает в другое место. При этом название фото во временной папке - это дата-время. На сервере настраиваем крон, он ночью ищет файлы за вчера во временной папке и удаляет.
Или во временной папке создаем папку с датой, а туда кидаются фото как есть. Так и имена файлов не надо менять и папку проще удалить, чем кучу файлов.
Крон это планировщик задач. Есть на самом дешевом хостинге. Если просто, то вы говорите ему "запусти в 24-00 каждый день скрипт removegovno.php" или "зайди в 24-00 каждый день по адресу mysite.com/removegovno" а там уже php скрипт, который делает что пожелаете. В любой панели управления хостингом найдите "cron" или "планировщик" или что-то наподобие. Там скорее всего будет простой интерфейс для настройки.
Максим Тимофеев: а как сделать это если пользователь когда выбирает фотографию она появляется и ее видно, то есть загружается, и как тогда сделать отправку по подтверждению?
Максим Тимофеев: спасибо. а как сделать так чтобы появлялось в виджет и не загружалось на сервер. вот как раз это примерно я и ищу. просто мне пришлось подучить техн. ajax для этого и все равно не могу справиться с этой делемой.
thehighhomie: Давайте код, хотя бы что за виджет. Ссылку на страницу с ним дайте. Вообще советую обратить внимание на www.dropzonejs.com очень удобный и отлично кастомизируется
Максим Тимофеев: код выкладывать смысла наверное нет, все просто: в форме есть поля для ввода данных и поле для загрузки изображения. на input[type="file"] повешен обработчик на клик, в котором запускается ajax запрос, который загружает картинку на сервер и подгружает на место этого инпута. все)
Максим Тимофеев: про www.dropzonejs.com знаю, но из за плохого технического английского я не разобрался, я описал эту проблему ниже) так что как настроить этот скрипт я не понял(
Максим Тимофеев: да уже после того что вы сказали что файл не обязательно должен быть загружен для показа в виджете, я буду туда рыть) и походу это будет пытка)
Это значит, что javascript виджета обработал фото и вывел. Дальше должна отправиться форма, обычным post запросом или ajax не важно, только после отправки на сервер фото там может появится
Максим Тимофеев: есть русскоязычные ресурсы где это можно подучить? просто я пытался вывести изображение, загруженное во временную папку сервера "tmp", но там вообще другой формат и не работает, пока не произойдет загрузка
Почему бы после загрузки новой аватарки просто не удалять старую?
Если же вы имеете в виду временные файлы, то они удаляются после завершения работы скрипта.
thehighhomie: если речь об аватаре - можно создавать файл с уникальным ID пользователя и при загрузке новой автары - удалять старую. про это выше писали.
если галерея - то тут в чем вопрос? загрузил пользователь файл. захочет его удалить - ну и реализуйте механизм удаления его файла. я не пойму, в чем затык?
trevoga_su: в том что при загрузке картинок через ajax, чтобы было красиво, пользователь может передумать и отменить загрузку, а файлы загруженные останутся на сервере. вот я про что.
thehighhomie: что значит пользователь может отменить? что он отменит? опиши ВНЯТО алгоритм, как ты его видишь
сейчас у тебя каша в голове и ты сам не понимаешь свою проблему