johnmerlino1 Posted July 27, 2014 Share Posted July 27, 2014 I have the following code: $fp = fopen(“path_to_file”, ‘a’); flock($fp, LOCK_EX); fwrite($fp, $string); flock($fp, LOCK_UN); fclose($fp); If I try to lock the file in two different places at the same time, this will cause a race condition. How can I prevent this? I know in Java, for example, it has a concurrent library which contains reentrant lock, which basically tries to get the lock and if can't waits. What can I do in PHP? Quote Link to comment https://forums.phpfreaks.com/topic/290137-avoiding-race-conditions-when-opening-a-file-for-writing/ Share on other sites More sharing options...
kicken Posted July 27, 2014 Share Posted July 27, 2014 flock will wait if it cannot acquire the lock. If you have two different scripts trying to get a lock on the file then one of them will succeed and the other will be blocked until the first releases the lock. Quote Link to comment https://forums.phpfreaks.com/topic/290137-avoiding-race-conditions-when-opening-a-file-for-writing/#findComment-1486248 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.