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."); 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")) { if (!class_exists("PDO")) {
array_push($errors, "PHP support for PDO is required but was not found."); 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 { function file_is_locked(string $filename): bool {
if (file_exists(Config::get(Config::LOCK_DIRECTORY) . "/$filename")) { if (file_exists(Config::get(Config::LOCK_DIRECTORY) . "/$filename")) {
if (function_exists('flock')) { $fp = @fopen(Config::get(Config::LOCK_DIRECTORY) . "/$filename", "r");
$fp = @fopen(Config::get(Config::LOCK_DIRECTORY) . "/$filename", "r"); if ($fp) {
if ($fp) { if (flock($fp, LOCK_EX | LOCK_NB)) {
if (flock($fp, LOCK_EX | LOCK_NB)) { flock($fp, LOCK_UN);
flock($fp, LOCK_UN);
fclose($fp);
return false;
}
fclose($fp); fclose($fp);
return true;
} else {
return false; return false;
} }
fclose($fp);
return true;
} else {
return false;
} }
return true; // consider the file always locked and skip the test
} else { } else {
return false; return false;
} }