Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL yhteyden avaaminen ja sulkeminen

jideko [12.07.2008 13:41:40]

#

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ä?

Grez [12.07.2008 13:46:48]

#

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.
}

?>

Blaze [12.07.2008 14:12:10]

#

jideko kirjoitti:

onko tässä mitään järkeä?

On paljon enemmän järkeä kuin yhteyden avaamisessa monta kertaa.

Wizard [12.07.2008 16:20:54]

#

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-

TsaTsaTsaa [12.07.2008 16:23:45]

#

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...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta