fresh/src/State/Lockfile.php

40 lines
836 B
PHP

<?php
namespace NoccyLabs\FreshDocker\State;
class Lockfile
{
private string $filename;
private int $maxLock = 3600;
private bool $locked = false;
public function __construct(string $filename)
{
$this->filename = $filename;
register_shutdown_function([$this,"release"]);
}
public function lock()
{
if (file_exists($this->filename)) {
if (time() - filemtime($this->filename) < $this->maxLock) {
throw new \RuntimeException("Lockfile {$this->filename} already exists");
}
}
touch($this->filename);
$this->locked = true;
}
public function release()
{
if ($this->locked && file_exists($this->filename)) {
unlink($this->filename);
}
$this->locked = false;
}
}