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

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 - это если много народу сразу сохраняет картинки), блокировать его, записывать картинку и закрывать. Временный файл удалять.
Как сохранить картинку в переменную, а не в браузер или на диск - не знаю :(

Может быть есть более простые варианты решения этой проблемы?
 

fixxxer

К.О.
Партнер клуба
хинт
у функции имaгегиф второй параметр необязательный
хинт2
ob_
 

MiksIr

miksir@home:~$
Храните максимальный ID в отдельном файле - его и блокируйте.
Читать каждый раз директорию в поисках максимального ID не лучший вариант.
 

XTR

Новичок
Армян, страшный он, а это все-таки пользователям отдается :)

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

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

Всем спасибо!
 

pilot911

Новичок
можно немного иначе сделать, если ID начинается с единицы - хранить в файле только пробелы (добавлять пробел при новой картинке), а макс значение картинки узнавать из размера файла
 

SiMM

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