33 lines
662 B
PHP
33 lines
662 B
PHP
<?php
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Services\WebSocket;
|
|
|
|
class EventPublisher
|
|
{
|
|
private string $queueFile;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->queueFile = __DIR__ . '/../../../storage/ws/events.log';
|
|
}
|
|
|
|
public function publish(array $payload): void
|
|
{
|
|
$dir = dirname($this->queueFile);
|
|
|
|
if (!is_dir($dir)) {
|
|
mkdir($dir, 0775, true);
|
|
}
|
|
|
|
$line = json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
|
|
if ($line === false) {
|
|
return;
|
|
}
|
|
|
|
file_put_contents($this->queueFile, $line . PHP_EOL, FILE_APPEND | LOCK_EX);
|
|
}
|
|
} |