for-Schleife und sleep() - 500 Internal Server Error
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abrufen
anbindung
anheben
ausgabe
code
datei
fehl
fehler
jemand
laden
ladezeit
liegen
pause
problem
schau
schleife
sekunde
server
url
verhindern
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Langsamer Webspace und lahme MySQL anbindung
-
Liegt das Script bei Lima? Da kannst du die max. Ausführungszeit nicht anheben.
Aber schön, dass mal jemand von deutschen Worten Gebrauch macht. -
Das Script liegt nicht bei Lima. Wollte es hier mal testen aber zz. kann man nichts uploaden.
-
Warum willst du überhaupt dein Scipt verlangsamen?
-
Ich habe ein Script welches einige Requests an andere Server stellt, die natürlich einige Zeit beanspruchen und synchron ablaufen müssen.
Da ich den Fehler anfangs nicht eruieren konnte, habe ich nach diesem 500 Fehler gesucht, Dateirechte usw. überprüft. Nachdem dies auch nichts gebracht hat, habe ich es mit einer einfachen for-Schleife probiert, was eben auch dieses Problem verursacht.
Dh. die Ausführungszeit scheint zu lang zu sein obwohl die max execution time bereits erhöht wurde bzw. auf 60 standardmäßig ist.
Doch 4 * 10 ergibt sowieso nicht 60. Also kann es wohl daran auch nicht liegen... -
Ja gut, da kommen wir dem Problem ja schon näher. Ist mir aber noch zu unkonkret beschrieben. Du willst Daten von einem "anderen Server" abrufen? Wenn ja, via HTML, XML, sonstiges? Vielleicht würde ein wenig Quelltext zur Problemfindung beitragen?
-
Du überträgst also Dateien von einem dritten Rechner an den Server. Es könnte ja sein, dass dies zu lange Zeit in Anspruch nimmt, weswegen die maximale Ausführungszeit doch erreicht wird. Schau doch mal bitte auf die Uhr, nach wie vielen Sekunden die Seite zu Ende geladen hat und dir der Fehler angezeigt wird.
-
<?php set_time_limit(0); for($i = 0; $i < 4; $i++) { echo $i; sleep(10); } ?>
Er bricht bei diesem Code bei ~37 Sekunden ab. -
Setze die maximale Ausführungszeit eines PHP-Scripts niemals auf 0, d.h. unendlich! Setze sie auf 86400.
Und na, wenn das so etwa 37 Sekunden sind, könnte es dann vll. sein, dass das die erwarteten 40 Sekunden waren? -
Das mit der 0 ist mir klar, ich wollte für diesen Testzweck nur verhindern, dass es irgendeine maximale Ausführungszeit gibt.
Worauf willst du genau hinaus? Wenn die max_execution_time seitens php auf 60 steht darf er sich bei 40 doch nicht gleich komplett wegschmeißen? Oder verstehe ich etwas nicht ganz richtig?! -
silecom schrieb:
Bis diese erreicht wird, wird das Script nicht abgewürgt, d.h. wenn das Script nach weniger, als dieser Zeit endete, hatte dies einen anderen Grund.
Das mit der 0 ist mir klar, ich wollte für diesen Testzweck nur verhindern, dass es irgendeine maximale Ausführungszeit gibt.
silecom schrieb:
Wir reden hier über die maximale Ausführungszeit, also eine Obergrenze. Wenn du eine Schleife 4 mal durchlaufen lässt und jedes mal 10 Sekunden warten lässt, ist das Script nach 40 Sekunden fertig, weswegen die Seite auch nach 40 Sekunden dargestellt wird.
Worauf willst du genau hinaus? Wenn die max_execution_time seitens php auf 60 steht darf er sich bei 40 doch nicht gleich komplett wegschmeißen? Oder verstehe ich etwas nicht ganz richtig?! -
Ja^^, aber wie schon gesagt kommt es nach diesen ~37 Sekunden zu einem 500 Internal Server Error. Das ist die Ausgabe :D
Aber wahrscheinlich muss ich wohl doch noch einen Blick in die Error Logs werfen müssen um das wirkliche Problem feststellen zu können. -
Kommentiere die Schleife aus, und schau, was ausgegeben wird.
-
Was soll ausgegeben werden? Nichts :)
Naja wie gesagt werd ich mir die Logs mal reinziehen müssen um mehr über das Problem zu erfahren. Ich werde, falls ich etwas finde, es dann hier wieder reinschreiben. Trotzdem danke für eure Hilfe! -
Frage: wozu brauchst Du eine Pause in PHP
Was genau hast Du damit vor
in der Pause wird ja nichts an den Browser gesendet, also keine Ausgabe
Normale User verlassen schon bei 3 Sekunden Ladezeit die Seite
Schon mal an meta-refresh gedacht?
oder besser: jquery und Ajax ?
Damit kannst Du alle x Sekunden eine Seite neu Laden (meta-refresh)
oder alle x Sekunden ohne Neu-Laden der Seite die Ausgabe neu aus nem PHP-File holen (ajax)
aber ... bitte mal mehr Infos, was Du mit ner Pause erreichen willst,
dann kann man Dir auch bessere Lösungsvorschläge anbieten
Grundsätzlich sollte man auf sleep() bei mehreren Pausen (und so langen) verzichten
aus den oben genannten Gründen (Ladezeit = Wartezeit ohne Ausgabe)
-
Na, wenn du das auskommentierst und weiterhin einen Fehler gezeigt bekommst, muss der Fehler wo anders liegen und du hast bisher an der falschen Stelle gesucht. So findet man Fehler.
-
Leider keine Unterstützung von .htaccess Dateien. Das ganze läuft nämlich auf einem IIS mit web.config und dafür gibts solche Direktiven soweit mir bekannt ja nicht. (ini_set wird ignoriert)
Ich habe versucht das Skript heute nochmals aufzurufen und es hat beim ersten Aufruf anstandslos geklappt... Alle weiteren Aufrufe schlugen jedoch fehl. Ist doch seltsam oder?
Beitrag zuletzt geändert: 2.8.2011 21:20:48 von silecom -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage