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) 아직 존재하지 않는 컬렉션을 대상으로 명령이 실행되므로, 실패하는 대신 빈 컬렉션으로 보고합니다.
storh을 종속성으로 설치한 경우 vendor/bin/storh에는 storh 0.5.2 이상이 필요합니다. 이전 버전은 패키지 자체의 vendor/ 디렉터리에서만 Composer 오토로더를 찾아 require 오류가 발생했습니다.
CLI은 안정적인 JSON을 출력하므로 cron 작업과 배포 상태 확인에 사용할 수 있습니다. 컬렉션의 기본값은 default입니다. 엔진은 stats, verify 및 reindex에 대해 doc가 기본값이며, 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()는 로그에서 큐 상태를 다시 빌드하고 시간 초과된 처리 중 작업을 다시 큐에 넣습니다.