Some very old PHP code originally intended to become an image management tool.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

58 lines
1.2 KiB

<?php
require_once dirname(__FILE__) . '/../config.php';
require_once LIBDIR . 'errException.php';
function acquireLock ($lockFile, $csId)
{
$fName = $lockFile . $csId . '.lck';
$lock = NULL;
setErrExceptionMapping ();
$lockHandle = fopen ($fName, 'w');
// if available use semaphores for mutual exclusion because flock
// doesn't work reliably in threaded environments.
if (function_exists ('sem_get'))
{
$lock = sem_get (ftok ($fName, $csId), 1, 0644, TRUE);
$state = sem_acquire ($lock);
while ($state === FALSE)
$state = sem_acquire ($lock);
}
else
{
$state = flock ($lock, LOCK_EX);
while ($state === FALSE)
$state = flock ($lock, LOCK_EX);
}
// Here one could write informations in the lockfile...time, pid, etc.
fwrite ($lockHandle, session_id () . '::' . time ());
fflush ($lockHandle);
resetErrExceptionMapping ();
$userAbort = ignore_user_abort(TRUE);
return array ($lockHandle, $lock, $userAbort);
}
function releaseLock ($lock)
{
setErrExceptionMapping ();
if ($lock[1] !== NULL)
sem_release ($lock[1]);
ftruncate ($lock[0], 0);
fclose ($lock[0]);
resetErrExceptionMapping ();
ignore_user_abort($lock[2]);
}
?>