33 lines
1017 B
PHP
33 lines
1017 B
PHP
<?php
|
||
|
||
namespace App\Livewire\Ui\Mail;
|
||
|
||
use Livewire\Component;
|
||
|
||
class QueueCard extends Component
|
||
{
|
||
public int $active = 0;
|
||
public int $deferred = 0;
|
||
public ?string $oldestAge = null;
|
||
|
||
public function mount(): void { $this->load(); }
|
||
public function render() { return view('livewire.ui.mail.queue-card'); }
|
||
public function refresh(): void { $this->load(); }
|
||
|
||
protected function load(): void
|
||
{
|
||
$out = trim(@shell_exec('postqueue -p 2>/dev/null') ?? '');
|
||
$this->active = preg_match_all('/^[A-F0-9]{10}\*?\s+/mi', $out); // grob
|
||
$this->deferred = preg_match_all('/\s+(\(deferred\))/mi', $out);
|
||
// älteste Mail grob: erste Queue-ID-Zeile → Zeit parsen (optional)
|
||
$this->oldestAge = $this->active + $this->deferred > 0 ? '~'.date('H:i') : '–';
|
||
}
|
||
|
||
public function flush(): void
|
||
{
|
||
@shell_exec('postqueue -f >/dev/null 2>&1 &');
|
||
$this->dispatch('toast', type:'info', title:'Queue flush gestartet');
|
||
}
|
||
|
||
}
|