Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stop multiple sessions accessing the same file simultaneously

Tags:

php

gd

Is it possible to lock a file to stop it being opened while GD library is accessing it?

What I am looking to achieve is similar to a database 'serialzable' level of isolation... I want to ensure that only one session/user can access an image at a time to stop a 'dirty read'.

My application allows users to add an image of choice to a bigger image.

for example

  • the big image is empty
  • Raj & Janet upload their images
  • Raj's session opens the big image.
  • 1 ms later Janet's session opens the big image.
  • Raj's session add's his image and saves the big image
  • 1 ms later Janet's session adds his image and saves its version of the big image.
  • As a result Raj's image is not in the final image as Janet's version overwrote it.

I hope that makes it clear enough.

like image 722
Pablo Avatar asked Dec 14 '25 11:12

Pablo


1 Answers

Check out flock. You can either lock the file you're working with, or create a "lock file" somewhere else in the filesystem which all your scripts check for.

like image 81
Emil Vikström Avatar answered Dec 17 '25 02:12

Emil Vikström



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!