2010-06-14 2 views
3

Можно ли заблокировать файл, чтобы остановить его открытие, пока GD-библиотека обращается к нему?Остановить несколько сеансов одновременного доступа к одному и тому же файлу

То, что я ищу, похоже на уровень изоляции «serialzable» базы данных ... Я хочу, чтобы только один сеанс/пользователь мог получить доступ к изображению за раз, чтобы остановить «грязное чтение».

Мое приложение позволяет пользователям добавить изображение большего размера.

, например

  • большое изображение пустой
  • Радж & Джанет загрузить свои изображения сессии
  • Раджа открывает большое изображение.
  • 1 мс позже сессия Джанет открывает большое изображение.
  • Раджа сессионного добавить в его образ и сохраняет большое изображение
  • 1 мс позже сессия Джанет добавляет его изображение и сохраняет свою версию большого изображения.
  • В результате изображение Раджа не находится в окончательное изображение, так как версия Джанет переписала его.

Я надеюсь, что это прояснит ситуацию.

+0

Благодарим за голосование! – Pablo

ответ

2

Отъезд flock. Вы можете заблокировать файл, с которым работаете, или создать «файл блокировки» в другом месте в файловой системе, на которую проверяются все ваши скрипты.

+0

Это выглядит прекрасно, мой единственный страх - это то, что если какой-то файл будет заблокирован навсегда .. Есть ли способ защититься от этого? – Pablo

+0

Блокировка освобождается, когда файл закрыт, поэтому единственная проблема может возникнуть, если ваш процесс зависает без закрытия (т. Е. Становится процессом зомби). –

Смежные вопросы