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:
$store->stats();
$store->health();
$store->verify();
$store->repair();
Дополнительные методы DocStore:
$docs->reindex();
$docs->compact(); // no-op report for API symmetry
Дополнительные методы SegmentedLog:
$log->compact();
$log->recover();
$log->state_index();
Для DocStore команда verify() проверяет, что записи корректно разбираются и что индексы равенства, диапазона и составные индексы соответствуют полному сканированию записей. Команда repair() помещает повреждённые файлы записей в карантин в .storh/corrupt/ и перестраивает индексы по корректным записям.
Для SegmentedLog команда verify() декодирует строки сегментов и сравнивает текущее производное состояние индекса с повторным воспроизведением сегментов. Команда repair() заново строит производное состояние и усекает незавершённые строки в конце.
Для Queue команда verify() декодирует каждое сохранённое событие и сравнивает состояние ожидающих и обрабатываемых задач, завершённых задач, данных и порядка захвата с повторным queue.log. Команда repair() восстанавливает состояние очереди по журналу и повторно ставит в очередь задачи, обработка которых превысила время ожидания.