Files
dev-chiefworks f76abffdcd first commit
2022-05-31 16:21:53 -04:00

44 lines
1.1 KiB
PHP

<?php
// sudo mkdir /run/php
// sudo chmod a+rw /run/php
function lock_pid_file($fn=NULL) {
if ($fn==NULL) {
$fn = '/run/php/'.basename($_SERVER['PHP_SELF'], '.php').'.pid';
}
$lock_file = fopen($fn, 'c');
$got_lock = flock($lock_file, LOCK_EX | LOCK_NB, $wouldblock);
if ($lock_file === false || (!$got_lock && !$wouldblock)) {
throw new Exception(
"Unexpected error opening or locking lock file. Perhaps you " .
"don't have permission to write to the lock file or its " .
"containing directory?"
);
}
else if (!$got_lock && $wouldblock) {
exit("Another instance is already running; terminating.\n");
}
// Lock acquired; let's write our PID to the lock file for the convenience
// of humans who may wish to terminate the script.
ftruncate($lock_file, 0);
fwrite($lock_file, getmypid() . "\n");
/*
The main body of your script goes here.
*/
return $lock_file;
}
function unlock_pid_file($lock_file) {
// All done; we blank the PID file and explicitly release the lock
// (although this should be unnecessary) before terminating.
ftruncate($lock_file, 0);
flock($lock_file, LOCK_UN);
}
/*
vi:ts=2
*/