Refactor file locking to return status and handle failure.
This commit is contained in:
parent
808baec53c
commit
0507fbb9d1
2 changed files with 13 additions and 4 deletions
|
@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
This update introduces a minor bug fix
|
This update introduces a minor bug fix
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Refactor file locking to return status and handle failure.
|
||||||
|
|
||||||
|
|
||||||
## [2.0.4] - 2024-12-04
|
## [2.0.4] - 2024-12-04
|
||||||
|
|
||||||
|
|
|
@ -42,12 +42,12 @@
|
||||||
*
|
*
|
||||||
* @throws RuntimeException if unable to open or lock the file.
|
* @throws RuntimeException if unable to open or lock the file.
|
||||||
*/
|
*/
|
||||||
private function lock(): void
|
private function lock(): bool
|
||||||
{
|
{
|
||||||
$this->fileHandle = fopen($this->filePath, 'a');
|
$this->fileHandle = @fopen($this->filePath, 'a');
|
||||||
if ($this->fileHandle === false)
|
if ($this->fileHandle === false)
|
||||||
{
|
{
|
||||||
throw new RuntimeException("Unable to open the file: " . $this->filePath);
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keep trying to acquire the lock until it succeeds
|
// Keep trying to acquire the lock until it succeeds
|
||||||
|
@ -64,6 +64,8 @@
|
||||||
flock($this->fileHandle, LOCK_UN);
|
flock($this->fileHandle, LOCK_UN);
|
||||||
$this->lock();
|
$this->lock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -87,7 +89,11 @@
|
||||||
*/
|
*/
|
||||||
public function append(string $data): void
|
public function append(string $data): void
|
||||||
{
|
{
|
||||||
$this->lock();
|
if(!$this->lock())
|
||||||
|
{
|
||||||
|
// Do not proceed if the file cannot be locked
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->fileHandle !== false)
|
if ($this->fileHandle !== false)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue