Перейти до вмісту

CLI

Командна оболонка
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]

<root> — це кореневий каталог сховища, з яким було відкрито рушії, тобто шлях, який повертає StorageRoot::resolve(): базовий каталог плюс простір імен. Сховище, відкрите в StorageRoot::resolve(__DIR__ . '/var/storh', 'app'), розташоване в var/storh/app:

Командна оболонка
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

Якщо передати лише базовий каталог (var/storh), команди звертатимуться до колекції, якої ще немає, тому покажуть порожню колекцію, а не завершаться з помилкою.

vendor/bin/storh потребує storh 0.5.2 або новішої версії, коли storh встановлено як залежність. Попередні версії шукали лише автозавантажувач Composer у власному каталозі vendor/ пакета й завершувалися з помилкою require.

CLI виводить стабільний JSON, тому його можна використовувати в завданнях cron і перевірках працездатності розгортання. За замовчуванням використовується колекція default; для рушія за замовчуванням вибирається doc для stats, verify і reindex, а для compact — log.

Методи обслуговування, що лежать в основі команд

Усі рушії надають методи обслуговування, які викликає CLI:

PHP
$store->stats();
$store->health();
$store->verify();
$store->repair();

DocStore додає:

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

SegmentedLog додає:

PHP
$log->compact();
$log->recover();
$log->state_index();

Для DocStore команда verify() перевіряє, чи коректно розбираються записи та чи відповідають індекси рівності, діапазонів і складені індекси повному скануванню записів. Команда repair() поміщає пошкоджені файли записів у карантин у .storh/corrupt/ і перебудовує індекси за коректними записами.

Для SegmentedLog команда verify() декодує рядки сегментів і порівнює поточний похідний індекс стану з результатом повторного відтворення сегментів. Команда repair() перебудовує похідний стан і обрізає пошкоджені останні рядки.

Для Queue команда verify() декодує кожну довговічну подію та порівнює стан очікування, обробки й виконання, дані та порядок отримання з результатом повторного відтворення queue.log. Команда repair() перебудовує стан черги за журналом і повторно ставить у чергу завдання обробки, час очікування яких минув.