Avvio rapido: la prima esportazione e il suo piano di importazione
Il percorso più breve da «il plugin è installato» a «un'esportazione completa dei dati DevOps è su disco e il piano per rimetterli dentro è stato letto». Tre passi, circa dieci minuti. Questa pagina è rivolta a chi sviluppa e a chi conduce l'esercizio.
Il motivo per farlo adesso e non nell'emergenza: è ciò che trasforma «abbiamo le copie di sicurezza» in «abbiamo i ripristini».
Prerequisiti
wkdostorage,wkcoreewkstoragesono installati e attivati.- PHP 8.2 o successivo con il driver PDO per SQLite.
- La directory dei dati del wiki è scrivibile.
- Un punto in cui poter eseguire PHP nel contesto del wiki — un plugin proprio o uno script di manutenzione che abbia caricato
inc/init.php.
Passo 1: prelevare il servizio
$core = plugin_load('helper', 'wkcore'); $storage = (is_object($core) && method_exists($core, 'get')) ? $core->get('dwdo.storage') : null; if ($storage === null) { return; // storage assente — ridurre le funzioni, non interrompere }
Non costruite da soli le classi dello storage. Il servizio è una factory pigra, ed è proprio questo a impedire che una richiesta che non tocca dati apra comunque un database.
Passo 2: scrivere l'esportazione
$export = $core->get('dwdo.export'); $percorso = $export->exporter()->exportToFile('/percorso/a/dwdo-backup.jsonl');
Il risultato è JSONL: un record per riga. Non è una questione di gusto. Il file si legge con i normali strumenti per righe, si divide, si accoda e si confronta riga per riga — e un file troncato perde il proprio ultimo record invece di diventare illeggibile.
Passo 3: leggere il piano di importazione — senza importare
$importer = $export->importer(); $plan = $importer->plan($jsonl); // riferisce, non cambia nulla // esaminare $plan
plan() esiste perché un'importazione serve proprio quando si è meno in grado di assorbire una sorpresa.
apply() esegue davvero l'importazione e lavora per impostazione predefinita con $replace = true — quindi sostituisce. Chiamatelo solo dopo aver letto il piano e se è quello che volete.
Verifica del risultato
- Il file si trova al percorso indicato e contiene per riga un oggetto JSON completo.
wc -lconta quindi i record. - Il piano per lo stesso file sulla stessa installazione in esercizio non descrive alcuna sorpresa — non dovrebbe annunciare nulla che non vi aspettiate. Se se ne discosta, avete trovato una domanda prima che diventasse costosa.
Passo successivo
- wkstorage — lo strato sottostante: migrazioni, istruzioni preparate, transazioni.
- wkdocore — il modello di progetto i cui dati stanno qui.
- wkdostorage (in tedesco) — la pagina del pacchetto: servizi, modelli tipizzati, repository e formato di esportazione.