Knihovna mysqlnd

Školení, která pořádám

Do PHP 6 se kromě jiného připravuje i zcela nová knihovna mysqlnd. Nebojte se, nejedná se o další rozšíření pro práci s MySQL (teď máme MySQL, MySQLi a PDO_MYSQL), jde o knihovnu nahrazující MySQL API. Hlavním důvodem změny je zvýšení výkonu, protože knihovna libmysql je poměrně nízkoúrovňová a pracuje se strukturami nekompatibilními s těmi, které používá PHP. Druhým důvodem je zlepšení kontroly nad knihovnou.

V PHP 6 bude možné zvolit, která knihovna se má pro MySQL rozšíření používat. Osobně se toho trochu bojím, protože by to mohlo vést k nekompatibilitám, za zvýšení výkonu to ale někomu stát bude.

Mně se myšlenka užší integrace PHP a MySQL líbí. Např. funkce mysql_query pro uložení výsledků používá API funkci mysql_store_result, která výsledky uloží na straně klienta. Pokud je pak získáváme funkcí mysql_fetch_assoc nebo podobnou, kopírují se do struktur PHP. Pokud tedy např. šablonovací systém potřebuje přímý přístup ke všem datům, jsou tato data uložena dvakrát (až do zavolání mysql_free_result). Funkce mysql_unbuffered_query zase drží výsledky na serveru. Knihovna by tomuto duplikování dat mohla zabránit. Potom by se místo funkcí query a fetch klidně všechny výsledky mohly uložit do pole, když už v paměti stejně jsou.

Jakub Vrána, Ze zákulisí, 20.12.2006, diskuse: 7 (nové: 0)

Diskuse

error414:

Prvni dojem z clanku byl ze si tu knihovnu budu moct volit v behu PHP, to asi nebude to prave ze?

halogan:

"Mě se myšlenka užší integrace" => "Mně se myšlenka užší integrace"

ikona Jakub Vrána OpenID:

Díky za upozornění, opravil jsem to.

Techi:

Já jsem teda začal fandit PDO. Radši používat kód, kterej nezávisí na konkrétní databázi. Nestačilo by vylepšit stávající PDO driver pro MySQL?

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL: Reakce na: Techi

ikona Jakub Vrána OpenID:

Vylepšit ovladač nestačí, protože závisí na ovladači od MySQL. Nicméně myslqnd bude možné použít i v rámci PDO_MYSQL.

tark:

Kód nezávislý na databázi psát moc nejde, leda základní struktury... Co třeba tohle? IFNULL na MySQL, NVL na Oracle a COALESCE na PgSQL. He? ;)

Štěpán Svoboda:

Off topic: To je zajímavé, co všechno Google indexuje http://www.google.com/search?client=opera&…&oe=utf-8
avatar © 2005-2020 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.