Script dauert zu lange
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
anfrage
code
datenbank
durchlauf
endlosschleife
ergebnis
fehlermeldung
http
lange code
maximum
problem
satzzeichen
schlechten datenbanken
schleife
sekunde
test
vorgang
warten
zuweisung
-
Wiso dauert dieser Script so lange
<? include(\"mysql.inc.php\"); $abfrage=\"SELECT * FROM onlysteil\"; while($row = mysql_fetch_object(mysql_query($abfrage))){ $passwort = $row->passwort; } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Da es höchstwahrscheinlich auf den Datenbankserver vom Lima-City zugreift. Bei schlechten Datenbanken dauert der Zugriff schonmal eine Weile.
Grüße, Moritz
P.S.: Satzzeichen gibt es auch... -
Ich hab bei diesem Script die datenbank von bplaced.net benutzt. Sonst könnte ich eigendlich warten das problem ist nur diese Fehlermeldung
Fatal error: Maximum execution time of 12 seconds exceeded in /users/automanager1/www/test.php on line 4
-
Ich hab bei diesem Script die datenbank von bplaced.net benutzt. Sonst könnte ich eigendlich warten das problem ist nur diese Fehlermeldung
Fatal error: Maximum execution time of 12 seconds exceeded in /users/automanager1/www/test.php on line 4
Hast du vielleicht versucht von lima aus auf die bplaced-DB zuzugreifen? Das funktioniert nicht.
Ansonsten waren die bplaced-Datenbankserver halt gerade nicht erreichbar, und nach 12 Sekunden hat PHP den Vorgang dann abgebrochen. -
onlysteul schrieb:
Wiso dauert dieser Script so lange
<? include(\\\'mysql.inc.php\\\'); $abfrage=\\\'SELECT * FROM onlysteil\\\'; while($row = mysql_fetch_object(mysql_query($abfrage))){ $passwort = $row->passwort; } ?>
Aua
Es dauert deshalb so lange, weil dieses Script eine Endlosschleife ist.
while($row = mysql_fetch_object(mysql_query($abfrage))){
Diese Zeile bedeutet folgendes:
Solange(while) du der Variable $row einen vernünftigen Wert zuweisen kannst, wiederhole die Schleife.
$row ermittelst du in jedem Schleifendurchlauf neu, indem du das MySQL-Query bei jedem Schleifendurchlauf neu ausführst. Das ist natürlich totaler Blödsinn, da man schließlich nur einmal das Query ausführen sollte und dann erst innerhalb einer Schleife die zwischengespeicherten Datensätze einzeln in $row speichert.
Es ist deshalb eine Endlosschleife, weil das MySQL-Query in jedem Durchlauf neu ausgeführt wird und die Zuweisung $row=mysql_fetch_object(...) immer Erfolgreich ist, da du dir jedes mal den 1. Datensatz aus dem Select rausholst. Beim nächsten Schleifendurchlauf wird das zwischengespeicherte Query-Ergebnis wieder (mit dem selben Ergebnis) überschrieben.
Also, korrekt müsste es heißen:
<? include(\\\'mysql.inc.php\\\'); //Die Variable $abfrage ist überflüssig $anfrage=mysql_query(\"SELECT * FROM onlysteil\"); //Das Ergebnis des Queries ist nun zwischengespeichert und kann mit der While-Schleife abgearbeitet werden. while($row = mysql_fetch_object($anfrage)){ $passwort = $row->passwort; } ?>
Um vernünftiges PHP und MySQL zu lernen, empfehle ich: http://tut.php-q.net/ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage