<?php 
$time= time(); 
require('../ConcurrentFile.php'); 
  
   if ($_POST) { 
  // do stuff 
    $file = new ConcurrentFile("data.txt"); 
    $file->writeLock(); 
    sleep(20); 
    $file->write("hello world old");   
    $file->close(); 
     
  }  
      
?> 
<html> 
<head><title>race condition example</title></head> 
<body> 
  <p>This is a test to see the transaction at work.</p> 
  <p>click on the button "do stuff", while page is loading remove the code "sleep(20)" and change "old" to "right", then click in a new tab the same button </p> 
  <p>You will see that the second script will wait for the end of first script and the result is right</p> 
  <form method="POST"> 
    Delay caused by lock <?php echo time() - $time; ?> , max is 20.<br> 
    <a><?php echo ConcurrentFile::getInstance("data.txt")->read(); ?></a> 
     
    <input type="submit" name="do_stuff" value="Do stuff!"> 
  </form> 
</body> 
</html> 
 
 |