Re: Ensure only one instance of a script is running
| From: | Jeremiah Fisher | Date: | Thu, 17 Mar 2005 14:10:28 +0000 |
| Subject: | Re: Ensure only one instance of a script is running | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-210979@lists.php.net to get a copy of this message | ||
Test for a lock file when the script starts, and remove it when the script ends. This isn't 100% reliable, but it's the typical solution to this problem. If the script fails, the lock file may not be removed (ever have a Mozilla browser crash and tell you the default profile is locked?), so be careful with your error handling!
<?php
// test for lock file
if ( !$f = fopen( 'lock', 'r')) {
// touch the lock file
$f = fopen( 'lock', 'w');
fwrite( $f, 'lock');
fclose( $f);
} else {
// lock file exists; another instance must be running (we hope)
echo 'Error: An instance of this script is already running!';
exit( 1);
}
/* script stuff */
// remove the lock file for the next instance
unlink( 'lock');
?>
Shaun wrote:
Hi, I have a script that inserts data from files uploaded to our server. I need to make sure that only one instance of this script runs at anyone time, can anyone tell me how I can do this? Many thanks