Nedávno jsem tu psal, že na WZ jsou i jiné a výkonnější databáze. Chtěl jsem tedy vyzkoušet na serveru Nike databázi GDBM (je v phpinfo). Při pokusu o vytvoření jsem však narazil:
dba_open(data.db,n) [function.dba-open]: Driver initialization failed for handler: gdbm: File open error
Přitom na Nike je podle dba_handlers()
- GDBM version 1.8.0, as of May 19, 1999
Zkoušel jsem i inifile a flatfile, fungovaly. Ovšem ty jsou určeny jen pro malé databáze, neboť mají pouze sekvenční přístup.
Totéž na serverech Hera a Loki. Mám tomu rozumět tak, že GDBM má poškozený modul, je to honeypot nebo že ji někdo zapomněl vyhodit z phpinfo?
Použití těchto lehkotonážních databází by mohlo značně ulehčit věčně přetíženému MySQL serveru zejména u redakčních systémů.
Mezitím jsem zjistil, že korektně nefunguje ani DBA inifile. Z funkčních databází na WZ tedy zbývají: MySQL, SQLite (v PHP5), CDB a flatfile.
Databázi flatfile je možné doporučit jen pro nepříliš často měněná data, neboť nové i aktualizované záznamy jsou přidávány na konec a databáze se tím neustále zvětšuje. Na řešení fóra by však mohla být přímo ideální, neboť tam se data nemění, ale prakticky jen přidávají. Při mazání záznamů se žádné místo neuvolní. Pokud by každé vlákno mělo svůj flatfile soubor (to je možné), získáme pomocí flatfile velmi rychlé fórum.
Konstantní databáze CDB je výkonnostní bomba. Na neměnná data nic rychlejšího asi neexistuje.
Tak mi už GDBM funguje jak má. Chyba byla na mé straně, cesta k souborům musí být absolutní. Dá se odvodit např. z proměnné $_SERVER['SCRIPT_FILENAME'].
Úspěšně testováno na serverech Hera a Nike.