Блокирующая запись при сохранении картинки

  • Автор темы Автор темы XTR
  • Дата начала Дата начала

XTR

Новичок
Блокирующая запись при сохранении картинки

Задача: сохранить картинку в формате GIF на диск с уникальным ID (1,2,3,4...).
Если обычный файл можно заблокировать функцией flock и записать туда данные, то с функцией imagegif такой фокус не проходит.

Пока вижу только один вариант: сохранять картинку с уникальным именем ( date("YmdHis").md5(microtime(1).mt_rand()).".gif"; ) в папку temp, читать его сразу оттуда file_get_contents, читать основную директорию, определять максимальный ID, создавать файл с номером maxID+1.gif (если не получается - увеличивать в цикле номер, пока функция не вернет true - это если много народу сразу сохраняет картинки), блокировать его, записывать картинку и закрывать. Временный файл удалять.
Как сохранить картинку в переменную, а не в браузер или на диск - не знаю :(

Может быть есть более простые варианты решения этой проблемы?
 
хинт
у функции имaгегиф второй параметр необязательный
хинт2
ob_
 
Храните максимальный ID в отдельном файле - его и блокируйте.
Читать каждый раз директорию в поисках максимального ID не лучший вариант.
 
Армян, страшный он, а это все-таки пользователям отдается :)

fixxxer, вас я не понял совсем :(

MiksIr, мысль хорошая - хранить в файле ID: блокируем, читаем, прибавляем на единичку, записываем картинку, разблокируем. Кажется, все просто :)

Всем спасибо!
 
можно немного иначе сделать, если ID начинается с единицы - хранить в файле только пробелы (добавлять пробел при новой картинке), а макс значение картинки узнавать из размера файла
 
> fixxxer, вас я не понял совсем
Сохранять файл с помощью imagegif необязательно - для этого вполне можно обойтись стандартными функциями, которые вполне поддерживают блокировку.
Но вариант MiksIrа покрасивше.
 
Сверху