Hei
Kuinka paljon MySQL yhteyden toistuva avaaminen ja sulkeminen kuormittaa palvelinta ja kuinka paljon se hidastaa sivun lataamista?
Olen tehnyt omia funktioita joka etsii esimerkiksi uutiset tai tapahtumat tietokannasta ja kutsun niitä useasti yhdellä sivulla.
Nyt funktiot ovat mallia:
$link = mysql_connect($mysql_palvelin, $mysql_tunnus, $mysql_sala) or die('Tietokantavirhe'); $query ="SELECT * FROM tapahtumat"; $result = mysql_query($query, $link) or die('Query failed: ' . mysql_error()); tässä sitten kaikki tarvittavat toimenpiteet. mysql_close($link);
Nyttenhän kun kutsun funktioita useasti yhdellä sivulla niin mysql yhteys avataan ja suljetaan useasti. Voiko asian tehdä jotenkin fiksummin?
Jos yhteyden avaa tiedoston alussa ja sulkee vasta tiedoston lopussa, niin funktiot ei ymmärrä ulkopuolisia muuttujia, tässä tapauksessa siis $link. Senhän voisi antaa funktiolle parametrina, mutta onko tässä mitään järkeä?
No voit antaa sille funktiolle tuon $link parametrina, tai kirjoittaa global $link.
Siis
<?php $link = mysql_connect($mysql_palvelin, $mysql_tunnus, $mysql_sala) or die('Tietokantavirhe'); Jepa(7); Jepa(15); mysql_close($link); function Jepa($joo) { global $link; $query ="SELECT * FROM tapahtumat WHERE hei=$joo"; $result = mysql_query($query, $link) or die('Query failed: ' . mysql_error()); //tässä sitten kaikki tarvittavat toimenpiteet. } ?>
jideko kirjoitti:
onko tässä mitään järkeä?
On paljon enemmän järkeä kuin yhteyden avaamisessa monta kertaa.
Oliot ovat päivän sana.
Toiseksi: jätä tuo yhteys sulkematta sillä se suljetaan automaattisesti scriptin lopussa. Yhteyden sulkemisella on merkitystä vasta hieman isommissa palveluissa TAI jos esim. operaattori on sallinut vain yhden tai hyvin vähän yhteyksiä / kanta / käyttäjätunnus.
MySQLi käyttäytyy taas eri tavalla kuin MySQL. MySQL on "idioottivarma" tapa ja helppo. Avaa yhteys, siirrä yhteyden avaamisen palauttama resource_id globaaliin muuttujaan, kutsu sitä mistä haluat ja lopussa kun scriptin suoritus lopetetaan, sulkeutuu yhteys automaattisesti. Ei sen kummempia metkuja.
-W-
Wizard kirjoitti:
Oliot ovat päivän sana.
Tuli tuosta mieleen, että olisi aika mielenkiintoista jos jonakin sunnuntaina jossakin kirkossa joku pastori aloittaisi saarnan noilla sanoilla ja pitäisi siihen parin tunnin luennon olio-ohjelmoinnista.
Mmm...mihinkäs sen takkini laitoinkaan...
Aihe on jo aika vanha, joten et voi enää vastata siihen.