Autor Zpráva
Milan1236000
Profil
Zdravím, četl jsem, že by se po vykonání všech příkazů pro práci s databází mělo "uzavřít" spojení s databází, ale na internetu jsem někde jinde zase našel, že příkaz pripojeni.Close(); už se psát nemusí a děje se to automaticky.
Je to opravdu zbytečné pokaždé tedy psát?
lionel messi
Profil
Milan1236000:
Je to opravdu zbytečné pokaždé tedy psát?

Áno.
Milan1236000
Profil
lionel messi:
Fajn, díky za odpověď.
juriad
Profil
Milan1236000:
Záleží asi na programovacím jazyku a databázových knihovnách. pripojeni.Close(); nevypadá na PHP, takže těžko říct.
Milan1236000
Profil
juriad:
Ono není jedno, zda to je C# pripojeni.Close(); nebo PHP $pripojeni->close();?
Takže v PHP se to uzavírat nemusí? Kde se to uzavírat musí?
mimochodec
Profil
zrovna nedávno jsem dostal tip od někoho, komu to zátěž databáze znatelně snížilo. Nemůže za nějakých okolností neuzavírání připojení zátěž serveru opravdu zvýšit?
Dusann
Profil
Podľa mňa čím skôr sa session do DB uzavrie tým lepšie to môže byť pre uvoľnenie prostriedkov. Ak v skripte po interakcii s DB nasleduje nejaký ďalší kód ktorý s DB už nepracuje a ktorý zaberá nejaký čas, tak načo počas tejto doby má byť session do DB stále aktívne ?
Milan1236000
Profil
Ještě jednoduchý dotaz.
Mám v souboru paticka.php uzavření všech použitých HTML tagů a příkaz:
<?php $pripojeni->close(); ?>
a připojuji ji ke každé stránce, tak když v hlavičce.php nebudu mít připojení k databázi, tak by i přesto nemělo vadit, že se v patičce vykoná "odpojení od nepřipojené databáze", ne?
xROAL
Profil
Milan1236000:
odpojení od nepřipojené databáze
Toto samé o sebe by vadiť nemuselo, skôr bude vadiť, že voláš metódu close() na niečom, čo nie je objekt. Kvôli tomu sa bude objavovať chybová hláška.
juriad
Profil
Milan1236000:
V PHP zavírat spojení není nutné. Je to popsané v dokumentaci php.net/manual/en/mysqli.close.php. Význam by to mělo, jen kdybys po zavření připojení prováděl něco netriviálního, ale ty ho zavíráš v patičce, tedy na posledním místě, kde se vůbec něco děje.
Milan1236000
Profil
xROAL, juriad:
Díky za odpovědi.
Zkusil jsem to tak, jsk jsem napsal a opravdu se objevila chyba, dokonce 2. Přidal jsem tam tedy podmínku
<?php if(isset($pripojeni)) $pripojeni->close(); ?>
a vypadá to, že to funguje, už žádná chyba.
Krakatoa
Profil
Milan1236000:
To má být myslím if(isset($pripojeni)) ... a bude to bez hlášky.
A nechápu proč to děláš, jak už tu bylo psané, to ukončení připojení se stejně vykoná po dokončení php skriptu, takže když jej dáváš nakonec, je to naprosto zbytečné, to samé se ti vykoná pokud tam to ukončování mít nebudeš.
Aha, tak jsi na to přišel ještě předemnou.
Milan1236000
Profil
Krakatoa:
ukončení připojení se stejně vykoná po dokončení php skriptu
Po dokončení kterého skriptu? Mám docela dost částí php skriptů, asi nějak takhle vypadá stránka před zobrazením v prohlížeči
<?php $pripojeni = new mysqli ... ?>
...
<?php $title = "..."; ?>
<?php include 'hlavicka.php'; ?>
...
    <title><?php echo $title; ?></title>
...
<nav>
        ...
          <li <?php if (...) ...; ?>>
...
<main>
        ...
<?php while(...->fetch_object()) ... ?>
...
<?php include 'paticka.php'; ?>
Takže rozumím tomu správně, že se automaticky odpojí, až se provedou všechny skripty a zobrazí se stránka?
Krakatoa
Profil
Milan1236000:
Takže rozumím tomu správně, že se automaticky odpojí, až se provedou všechny skripty a zobrazí se stránka?
Jo.
Uvolňovat by to mělo smysl, kdyby to mělo smysl. Například má větší smysl uvolnit proměnnou $title hned po vypsání v title, dál ji snad potřebovat nebudeš, proč neuvolníš rači tu poroměnnou? :-)
Milan1236000
Profil
Krakatoa:
To se taky dělá? No, proč ne, ale ta rychlost na serveru moc znát nebude. ne? :DD

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: