
# CLI

```bash
vendor/bin/storh stats <root> [collection] [doc|log|queue]
vendor/bin/storh verify <root> [collection] [doc|log|queue]
vendor/bin/storh compact <root> [collection] [doc|log]
vendor/bin/storh reindex <root> [collection]
```

A(z) `<root>` az a tárolási gyökérkönyvtár, amellyel a motorokat megnyitották; ez az az útvonal,
amelyet a(z) `StorageRoot::resolve()` ad vissza: az alapkönyvtár és a névtér együtt. A(z)
`StorageRoot::resolve(__DIR__ . '/var/storh', 'app')` alatt megnyitott tár a következő helyen található:
`var/storh/app`:

```bash
vendor/bin/storh stats var/storh/app pages doc
vendor/bin/storh verify var/storh/app events log
vendor/bin/storh compact var/storh/app events log
vendor/bin/storh reindex var/storh/app pages
```

Ha csak az alapkönyvtárat adja meg (`var/storh`), a parancsok egy még nem létező gyűjteményre mutatnak, ezért üres gyűjteményt jeleznek hiba helyett.

A(z) `vendor/bin/storh` esetén a(z) storh függőségként telepítve a(z) storh 0.5.2 vagy újabb verziója szükséges. A korábbi verziók csak a csomag saját `vendor/` könyvtárában keresték a(z) Composer autoloaderét, és `require` hibával leálltak.

A(z) CLI stabil JSON kimenetet ír, így használható cron feladatokban és telepítési állapotellenőrzésekben. A gyűjtemény alapértéke `default`; a motor alapértéke `stats`, `verify` és `reindex` esetén `doc`, `compact` esetén pedig `log`.

## A parancsok mögött álló karbantartási metódusok

Minden motor közzéteszi azokat a karbantartási metódusokat, amelyeket a(z) CLI meghív:

```php
$store->stats();
$store->health();
$store->verify();
$store->repair();
```

A DocStore további metódusai:

```php
$docs->reindex();
$docs->compact(); // no-op report for API symmetry
```

A SegmentedLog további metódusai:

```php
$log->compact();
$log->recover();
$log->state_index();
```

DocStore esetén a(z) `verify()` ellenőrzi, hogy a rekordok hibamentesen feldolgozhatók-e, és hogy az egyenlőségi, tartomány- és összetett indexek egyeznek-e a teljes rekordpásztázás eredményével. A(z) `repair()` karanténba helyezi a sérült rekordfájlokat a(z) `.storh/corrupt/` alatt, és érvényes rekordokból újraépíti az indexeket.

SegmentedLog esetén a(z) `verify()` dekódolja a szegmensorokat, és az aktuális származtatott állapot indexét friss szegmens-újrajátszással veti össze. A(z) `repair()` újraépíti a származtatott állapotot, és csonkolja a végén félbemaradt sorokat.

Queue esetén a(z) `verify()` dekódolja az összes tartós eseményt, és a függő, feldolgozás alatt álló, kész állapotot, a hasznos adatot és az igénylési sorrendet friss `queue.log`-újrajátszással veti össze. A(z) `repair()` újraépíti a sor állapotát a naplóból, és újra sorba állítja az időtúllépés miatt félbemaradt feldolgozású feladatokat.
