Příručka:ImportDump.php
Soubor MediaWiki: importDump.php | |
---|---|
Lokalita: | maintenance/ |
Zdrojový kód: | master • 1.44.2 • 1.43.5 • 1.39.15 |
Třídy: | BackupReader |
- Doporučená metoda pro obecné použití, ale pomalá pro velmi velké datové sady. Viz #Import anglické Wikipedie nebo jiných velkých wikin níže.
Soubor importDump.php je údržbový skript pro import XML souborů s dumpem do aktuální wiki. Načte stránky ze souboru XML, jak je vygeneruje příkaz Special:Export nebo dumpBackup.php , a uloží je do aktuální wiki. Je to jeden ze skriptů údržby MediaWiki a nachází se ve složce údržby vaší instalace MediaWiki.
Popis operace
Skript hlásí průběžný postup ve 100stránkových krocích (ve výchozím nastavení) a pro každý přírůstek hlásí počet stránek a revizí importovaných za sekundu, takže můžete sledovat jeho aktivitu a zjistit, zda se nezasekl. Mezi jednotlivými kroky může trvat 30 sekund nebo i více.
Skript je robustní, protože přeskakuje dříve načtené stránky, místo aby je přepisoval, takže po přerušení a restartu může poměrně rychle pokračovat tam, kde skončil. Při tom se stále zobrazuje postup, který docela rychle přeskakuje.
Stránky budou importovány se zachováním časového razítka každé úpravy. Kvůli této funkci, pokud je importovaná stránka starší než stávající stránka, se pouze naplní historie stránky, ale nejnovější revize se nenahradí starší. Pokud toto chování není žádoucí, měly by být stávající stránky před importem nejprve smazány, jinak je bude nutné upravit a vrátit se k poslední importované revizi nalezené v historii stránek.
Wiki je během importu použitelná.
Wiki vypadá divně, chybí jí většina šablon a je tam spousta červených odkazů, ale s postupujícím importem se to zlepšuje.
Příklady
Pokud máte přístup k shellu, můžete zavolat importdump.php ze složky údržby takto (v případě potřeby přidejte cesty):
phpimportDump.php--conf../LocalSettings.php/path_to/dumpfile.xml.gz--username-prefix=""
nebo toto:
phpimportDump.php<dumpfile.xml
kde dumpfile.xml
je název souboru s výpisem XML.
Pokud je soubor komprimovaný a má příponu .gz
nebo .bz2
(ale ne .tar.gz
nebo .tar.bz2
), dekomprimuje se automaticky.
--username-prefix=""
.Poté použijte ImportImages.php k importu obrázků:
php importImages.php ../path_to/images
--no-updates
. Také si všimněte, že informace v Importu o slučování historií atd. platí také.Po spuštění příkazu importDump.php můžete spustit příkaz rebuildrecentchanges.php , abyste aktualizovali obsah stránky Special:Recentchanges.
Pokud jste importovali výpis s parametrem --no-updates
, budete muset spustit příkaz rebuildall.php , abyste naplnili všechny odkazy, šablony a kategorie.
Volby
Volba/Parametr | Popis |
---|---|
--report | Po každých n zpracovaných stránkách hlásí pozici a rychlost. |
--namespaces | Importujte pouze stránky z jmenných prostorů patřících do seznamu názvů jmenných prostorů oddělených svislou čárou nebo indexů jmenných prostorů. |
--dry-run | Analyzovat výpis bez skutečného importu stránek. |
--debug | Vypsat další podrobné ladicí informace. |
--uploads | Zpracovat data pro nahrávání souborů, pokud jsou zahrnuta (experimentální). |
--no-updates | Zakázat aktualizace tabulky odkazů. Je to rychlejší, ale wiki je pak v nekonzistentním stavu. Po importu spusťte příkaz rebuildall.php pro opravu tabulky propojení. |
--image-base-path | Importovat soubory ze zadané cesty. |
--skip-to | Začněte od daného čísla stránky, přeskočte prvních n-1 stránek. |
--username-prefix | Přidává předponu k uživatelským jménům. Kvůli této chybě může být při importu souborů nutné zadat --username-prefix="" .
|
Časté dotazy
Jak nastavit ladicí režim?
Použijte volbu příkazového řádku --debug
.
Jak provést zkušební spuštění (bez přidání dat do databáze)?
Použijte možnost příkazového řádku --dry-run
Chybové zprávy
Nepodařilo se otevřít stream
V případě, že se zobrazí chyba "failed to open stream: No such file or directory" (nepodařilo se otevřít stream: Žádný takový soubor nebo adresář), ujistěte se, že zadaný soubor existuje a že k němu má PHP přístup.
Chyba při spuštění importImages
Napsáno
roots@hello:~# php importImages.php /maps gif bmp PNG JPG GIF BMP
Chyba
> PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0 > Could not open input file: importImages.php
Příčina
Před spuštěním souboru importImages.php je nejprve nutné změnit adresář do složky údržby, která obsahuje skript údržby importImages.php.
Chyba při spuštění MAMP
DB connection error: No such file or directory (localhost)
Řešení
Použití specifických přihlašovacích údajů k databázi
$wgDBserver = "localhost:/Applications/MAMP/tmp/mysql/mysql.sock"; $wgDBadminuser = "XXXX"; $wgDBadminpassword = "XXXX";
Import anglické Wikipedie nebo jiných rozsáhlých wiki stránek
U velmi velkých datových sad může importDump.php trvat dlouho (dny nebo týdny). Existují alternativní metody, které mohou být mnohem rychlejší pro úplnou obnovu webu, viz Příručka:Import výpisů XML .
Pokud vám ostatní metody nefungují, zde je několik tipů, jak použít importDump.php pro import velkých wikin, abyste co nejvíce zkrátili dobu importu...
Paralelizace importu
Můžete zkusit spustit importDump.php vícekrát současně na stejném výpisu s použitím možnosti --skip-to
...
V experimentu na Ubuntu byl skript spuštěn (na dekomprimovaném výpisu) několikrát současně v samostatných oknech s použitím volby --skip-to
.
Na čtyřjádrovém notebooku spuštění skriptu ve 4 oknech zrychlilo import čtyřnásobně.
V experimentu byl parametr --skip-to
nastaven na 250 000
až 1 000 000
stránek od sebe na instanci a import byl monitorován (čas od času kontrolován), aby se každá instance zastavila předtím, než se na ni naváže další.
Poznámka Poznámka: Tento experiment nebyl vyzkoušen s více instancemi bez parametru "--skip-to"", aby se předešlo potenciálním kolizím – pokud to zkusíte bez --skip-to
nebo necháte instance navzájem dohnat, napište prosím své výsledky sem.
V tomto experimentu se 2 okna načítala a nezobrazovaly se žádné chybové zprávy.
Zdálo se, že instance skriptu přeskakují jedna přes druhou.
Použití --skip-to
se liší od běžného provozu v tom, že během přeskakování se nezobrazují kroky postupu, místo toho se zobrazuje pouze (blikající) kurzor.
Po několika minutách se začnou zobrazovat zprávy o přírůstcích.
Segmentace dat
Možná by bylo vhodné data nejprve segmentovat pomocí děliče XML a poté je importovat paralelně. Pak spusťte importDump.php na každý segment v samostatném okně, čímž byste se vyhnuli potenciálním kolizím. (Pokud se vám v tomto procesu podařilo rozdělit výpis tak, aby fungoval, prosím, napište sem postup).
Nejprve importujte nejužitečnější jmenné prostory
Pro urychlení importu nejužitečnějších částí wiki použijte parametr --namespaces
.
Nejprve importujte šablony, protože články bez funkčních šablon vypadají hrozně.
Pak importujte články.
Nebo proveďte obojí současně ve více oknech, jak je popsáno výše, a nejprve spusťte šablony, protože se importují rychleji a okno (okna) článků je nestíhají.
Poznámka Poznámka: Hlavní jmenný prostor nemá prefix, a proto musí být zadán pomocí 0
.
Funkce "Main" (hlavní) a "Article" (článek) se nespustí a vrátí chyby.
Po dokončení bude nutné znovu použít importDump.php
k získání stránek ve všech ostatních jmenných prostorech.
Odhad, jak dlouho to bude trvat
Než budete moci odhadnout, jak dlouho bude import trvat, musíte zjistit, kolik stránek celkem importovaná wiki obsahuje. To se v každé wiki zobrazuje jako Special:Statistics. K říjnu 2023 měla anglická Wikipedie přes 59 000 000 stránek, včetně všech typů stránek, jako jsou diskusní stránky, přesměrování atd., ale bez obrázků ("souborů").
Chcete-li zjistit, jak rychle import probíhá, přejděte na stránku Special:Statistics ve wiki, do které importujete. Poznamenejte si čas a poznamenejte si celkový počet stránek. Pak se později vraťte a podívejte se, o kolik se toto číslo změnilo. Převeďte to na počet stránek za den a poté toto číslo vydělte celkovým počtem stránek importované wiki, abyste zjistili, kolik dní bude import trvat.
Například ve výše zmíněném experimentu, při importu s využitím paralelizace a pohledu na celkový počet stránek v Special:Statistics, wiki roste přibližně o 1 000 000 stránky denně. Import 59 000 000 stránek (k říjnu 2023) na anglickou Wikipedii (bez obrázků) tedy bude tímto tempem trvat přibližně 59 dní.
Poznámky
Od verze MediaWiki 1.29 (T144600) importDump.php neaktualizuje statistiky. Po importu byste měli ručně spustit příkaz initSiteStats.php , abyste aktualizovali počet stránek a revizí.
Řešení problémů
Viz také: meta:Data dumps/ImportDump.php#Common problems and solutions
Pokud se při importu souborů vyskytnou chyby, může být nutné použít volbu --username-prefix
.
Související odkazy
- Import XML výpisů - pro jiné metody importu.
- Manual:dumpBackup.php - pro pokyny k vytvoření výpisu.