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 είναι εγκατεστημένο ως
εξάρτηση. Οι παλαιότερες εκδόσεις αναζητούσαν μόνο τον autoloader του Composer στον
κατάλογο vendor/ του ίδιου του πακέτου και αποτύγχαναν με σφάλμα require.
Το CLI εμφανίζει σταθερό JSON, ώστε να μπορεί να χρησιμοποιηθεί από εργασίες cron και ελέγχους
καλής λειτουργίας ανάπτυξης. Η συλλογή είναι από προεπιλογή default· η μηχανή είναι από προεπιλογή
doc για τα stats, verify και reindex, και log για το compact.
Μέθοδοι συντήρησης πίσω από τις εντολές
Όλες οι μηχανές διαθέτουν τις μεθόδους συντήρησης που χρησιμοποιεί το 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() αναδημιουργεί την κατάσταση της ουράς από το αρχείο καταγραφής και επαναφέρει στην ουρά τις εργασίες υπό επεξεργασία που έληξαν χρονικά.