require PHP to have support for flock()

This commit is contained in:
Andrew Dolgov 2023-02-25 19:30:41 +03:00
parent a2af3a6bb4
commit 4d825fa6a6
No known key found for this signature in database
GPG Key ID: 1A56B4FA25D4AF2A
2 changed files with 12 additions and 11 deletions

View File

@ -541,6 +541,10 @@ class Config {
array_push($errors, "PHP support for JSON is required, but was not found.");
}
if (!function_exists("flock")) {
array_push($errors, "PHP support for flock() function is required.");
}
if (!class_exists("PDO")) {
array_push($errors, "PHP support for PDO is required but was not found.");
}

View File

@ -366,21 +366,18 @@
function file_is_locked(string $filename): bool {
if (file_exists(Config::get(Config::LOCK_DIRECTORY) . "/$filename")) {
if (function_exists('flock')) {
$fp = @fopen(Config::get(Config::LOCK_DIRECTORY) . "/$filename", "r");
if ($fp) {
if (flock($fp, LOCK_EX | LOCK_NB)) {
flock($fp, LOCK_UN);
fclose($fp);
return false;
}
$fp = @fopen(Config::get(Config::LOCK_DIRECTORY) . "/$filename", "r");
if ($fp) {
if (flock($fp, LOCK_EX | LOCK_NB)) {
flock($fp, LOCK_UN);
fclose($fp);
return true;
} else {
return false;
}
fclose($fp);
return true;
} else {
return false;
}
return true; // consider the file always locked and skip the test
} else {
return false;
}