Behavior of the sleep function?

From: Date: Tue, 10 Mar 2015 18:26:10 +0000
Subject: Behavior of the sleep function?
Groups: php.general 
Request: Send a blank email to php-general+get-324614@lists.php.net to get a copy of this message
Hello: I am experimenting with flock to find out how it works. I set up a page with a form that uses javascript ajax async 'get' to query the server. The reason for using ajax is that the page will not reload so I can keep a count of the queries issued and simulate two different users trying to edit the file. I am assuming that the first query (which calls flock and invokes the sleep function) would block the second query. But the second query succeeds and the the first query returns after 10 seconds You will see that $_error is printed before sleep is called, which would seem to mean that the contents of $_error would be sent back before the sleep cycle started. But it is printed to the browser window after the delay. The out put shown in the browser is at the end. So how would I actually test flock? It does not seem to be blocking the second query. (Maybe I have misunderstood the reason for it). Here is the code: <?php $_jsTest = ''; $_error = ''; if(!is_file('lab6_target.txt')) { if(is_writeable('./'))
     {
      $_fw = fopen('lab6_target.txt', 'w');
      fwrite($_fw, "some bs text for the sake of testing this turkey.");
      fclose($_fw);
     }
} if($_GET) { if($_GET['tstNo'] == '1')
     {
      $_jsTest = $_GET['tst1'];
      $_fw = fopen('lab6_target.txt', 'a');
      flock($_fw, LOCK_EX); // LOCK_SH, LOCK_EX, LOCK_UN
      $_error = "starting 10 second sleep";
      header('Content-Type: text/plain');
      print $_error;
      sleep(10);
      fwrite($_fw, $_GET['tst1']);
      flock($_fw, LOCK_UN);
      fclose($_fw);
      exit;
     }
else if($_GET['tstNo'] == '2')
     {
      $_jsTest = $_GET['tst1'];
      $_fw = fopen('lab6_target.txt', 'a');
      if(!$_fw)
        {
         header('Content-Type: text/plain');
         print "file not opened for write on second test";
         exit;
        }
      else
        {
         fwrite($_fw, $_GET['tst1']);
         fclose($_fw);
         header('Content-Type: text/plain');
         print "success";
         exit;
        }
     }
} ?> Test Result: successstarting 10 second sleep Thanks for time and attention

« previous php.general (#324614) next »