Performance verschlechterung oder gar absturz?

BigFacker

Erfahrenes Mitglied
Ja hallo!

Ich bin nun dabei mein tolles Intranetscript zu coden, für ne LAN...
So, blokal läuft bei mir eigentlich alles ziemlich perfekt, auch von den SQL zugriffszeiten und vom auslesen der Daten (wäre auch verwunderlich wenn das lokal net schnell geht:))

Nun hab ich aber bedenken. In eingen Datein des Scripts, wird halt innerhalb einer datei mehrmals die SQL verbindung geöffnet, ausgelesemn und wieder geschlossen. Dannach wird sie wieder geöffnet, lesen, schließen.
Programmiertechnisch ist das aber bei dem Script nicht anders zu realisieren, jedenfalls weiß ich ni wie:)

Nun meine Frage: macht MYSQL das auch mit, wenn sag ich mal 50 Mann auf der Page gleichzeitig sind?
Das dumme is, ich kann sowas ja net simulieren:) Aber wenn dann auf LAn das net klappt, wirds halt ******e..

Vielleicht kann mir da einer weiterhelfen
danke!!!
 
mysql_free_result($query); solltest du auch noch mit einbauen um den speicher wieder frei zu geben und somit wieder etwas performance gewinnen. (falls du dieses noch nicht gemacht haben solltest :^) )

es kommt auf den rechner an.. wenn 50 mann gleichzeitig auf die db zugreifen und das teil ist nur ein pentium 200 oder so, dann kann es schon vorkommen das die performance etwas nachlaesst, abstuerzen sollte sie aber bei 50 user'n nicht gerade :)
 
Programmiertechnisch ist das aber bei dem Script nicht anders zu realisieren, jedenfalls weiß ich ni wie

Um das festzustellen müsstest du mal den Teil des Scripts posten. Es gibt da so einige Tricks um bei den Zugriffen den DB-Server etwas zu entlasten. Hauptsächlich, wenn inerhalb von Schleifen nochmal Querys losgeschickt werden. Vielleicht läßt sich da noch was machen.

Gruss Homer
 
also ich habs bis jetzt immer so gemacht, das gaaaaaanz am anfang in der ersten zeile ein include steht wo die sql connection aufgerissen wird, in der letzten zeile wird sie geschlossen... da ich eigentlich niemals mit response.end arbeite (zerstört ja layouts :rolleyes: ;-) ) funktioniert das ziemlich gut! kann mir einfach nicht vorstellen das das unbedingt sein muss, mit dem häufigen aufreissen der verbindung...

ich kenn mich ja mit mysql nicht aus, aaaaaaaaaber der sql server von microsoft verkraftet ein "klein wenig mehr" als läppische 50 zugriffe zur gleichen zeit ;)

da gibts doch so stress tools wo bis zu 10.000 anfragen zur gleichen zeit an den server gestellt werden können über ein paar minuten hinweg oder so... such doch mal im google nach stress-tools (oder ähnliches) - ich kenn leider keins vom namen her auswendig ;)

hth
Q
 
Hi!

Also ich hab mir jetzt mal paar Stress-Tools runter geladen, und die Seite hat viel vertragen:)

Hier trotzdem nochmal das Script, vielleicht kann man ja wirklich was verbessern, ganz bestimmt sogar.
Also es geht in diesem Script um nichts anderes als in Formularfeldern, die per Schleife erzeugt werden, Daten auzugeben, die in einer DB stehen. Da nicht jeder Zeile der Datenbank Werte enthalten sind, manche also leer sind, musste ich für jedes einzelen Feld, die DB auslesen. Hätte ich das ganze Formular in den Echo Tag gesetzt, wären manche Formulare nicht erschienen, und zwar genua die, wo halt nichts in der DB entahlten ist.

PHP:
<?php

for($i=$cs2on2; $i >= 1; $i=$i/2)
{
  echo "
     <td>
       <table>";
       $k=$i;
       for($k=1; $k <= $i ; $k++)
	{
	
                echo "
		<form action=\"int_mysql_turniereupdate.php\">
		<tr><td><b>Spiel $i-$k</b>
		<input type=\"hidden\" name=\"game\" value=\"cs2on2\"></td></tr>
		<input type=\"hidden\" name=\"spielnr\" value=\"$i-$k\"></td></tr>
		<tr><td>clan1</td><td> <input type=\"text\" name=\"clan1f\" value=\"";
		include("mysql_connect.php");
		
		$abfrage = "SELECT clan1 FROM turnier_cs2on2 WHERE spiel = '$i-$k'";
		$erg = mysql_db_query("LAN",$abfrage,$verbindung);
		while (list($clan1) = mysql_fetch_row($erg))
      		  {
		   echo $clan1;
		  }
		mysql_free_result($erg);
		mysql_close($verbindung);
		echo "\"
		></td></tr>
		<tr><td>clan2</td><td><input type=\"text\" name=\"clan2f\" value=\"";
		
		include("mysql_connect.php");
		$abfrage = "SELECT clan2 FROM turnier_cs2on2 WHERE spiel = '$i-$k'";
		$erg = mysql_db_query("LAN",$abfrage,$verbindung);
		while (list($clan2) = mysql_fetch_row($erg))
      		  {
		   echo $clan2;
		  }
		mysql_free_result($erg);
		mysql_close($verbindung);

		echo "\"
		></td></tr>
		<tr><td>Winner</td><td><input type=\"text\" name=\"Win2\" value=\"";
		
		include("mysql_connect.php");
		$abfrage = "SELECT winner FROM turnier_cs2on2 WHERE spiel = '$i-$k'";
		$erg = mysql_db_query("LAN",$abfrage,$verbindung);
		while (list($winner) = mysql_fetch_row($erg))
      		  {
		   echo $winner;
		  }
		mysql_free_result($erg);
		mysql_close($verbindung);

		echo "\"
		></td></tr>
		<tr><td>Loser</td><td><input type=\"text\" name=\"Lose2\" value=\"";

		include("mysql_connect.php");
		$abfrage = "SELECT loser FROM turnier_cs2on2 WHERE spiel = '$i-$k'";
		$erg = mysql_db_query("LAN",$abfrage,$verbindung);
		while (list($loser) = mysql_fetch_row($erg))
      		  {
		   echo $loser;
		  }
		mysql_free_result($erg);
		mysql_close($verbindung);

		echo "\"
		></td></tr>
		<tr><td>Zeit</td><td><input type=\"text\" name=\"zeit2\" value=\"";
		
		include("mysql_connect.php");
		$abfrage = "SELECT zeit FROM turnier_cs2on2 WHERE spiel = '$i-$k'";
		$erg = mysql_db_query("LAN",$abfrage,$verbindung);
		while (list($zeit) = mysql_fetch_row($erg))
      		  {
		   echo $zeit;
		  }
		mysql_free_result($erg);
		mysql_close($verbindung);

		echo "\"
		></td></tr>
		<tr><td>Server</td><td><input type=\"text\" name=\"server2\" value=\"";

		include("mysql_connect.php");
		$abfrage = "SELECT server FROM turnier_cs2on2 WHERE spiel = '$i-$k'";
		$erg = mysql_db_query("LAN",$abfrage,$verbindung);
		while (list($server) = mysql_fetch_row($erg))
      		  {
		   echo $server;
		  }
		mysql_free_result($erg);
		mysql_close($verbindung);

		echo "\"
		></td></tr>
		<tr><td></td><td><input type=\"submit\" value=\"übermitteln\"><br><br></td></tr>		
		</form>
		";
	    
       }
   echo "</table></td>";



   
} 
?>

OK, vieleln DANK!!

bis denne
 
das andauernde includen der verbindung ist mift ;)

include die gaanz am anfang einmal!
und mach das close auch nur einmal am ende!

das ist wirklich total unnoetiger overhead, aber bei der "kleinen" anzahl an zugriffen merkst du das eh nicht ;)

mysql kann wesentlich mehr ab!
 

Neue Beiträge

Zurück