Viewing file: ServerStateFile.php (1.84 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Laravel\Octane\FrankenPhp;
use RuntimeException;
class ServerStateFile { public function __construct(protected string $path) { }
/** * Read the server state from the server state file. */ public function read(): array { $state = is_readable($this->path) ? json_decode(file_get_contents($this->path), true) : [];
return [ 'masterProcessId' => $state['masterProcessId'] ?? null, 'state' => $state['state'] ?? [], ]; }
/** * Write the given process ID to the server state file. */ public function writeProcessId(int $masterProcessId): void { if (! is_writable($this->path) && ! is_writable(dirname($this->path))) { throw new RuntimeException('Unable to write to process ID file.'); }
file_put_contents($this->path, json_encode( array_merge($this->read(), ['masterProcessId' => $masterProcessId]), JSON_PRETTY_PRINT )); }
/** * Write the given state array to the server state file. */ public function writeState(array $newState): void { if (! is_writable($this->path) && ! is_writable(dirname($this->path))) { throw new RuntimeException('Unable to write to process ID file.'); }
file_put_contents($this->path, json_encode( array_merge($this->read(), ['state' => $newState]), JSON_PRETTY_PRINT )); }
/** * Delete the process ID file. */ public function delete(): bool { if (is_writable($this->path)) { return unlink($this->path); }
return false; }
/** * Get the path to the process ID file. */ public function path(): string { return $this->path; } }
|