kostenloser Webspace werbefrei: lima-city


for-Schleife und sleep() - 500 Internal Server Error

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Hi,

    ich habe eine normale for-Schleife die 4 mal durchlaufen wird und jedes mal wird ein sleep(10) ausgeführt.
    Die maximale Ausführungszeit beträgt 60 Sekunden.

    Das Problem ist, dass es zu einem 500 Internal Server Error kommt. Hat jemand eine Idee wieso es dazu kommt?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. kalinawalsjakoff

    Kostenloser Webspace von kalinawalsjakoff

    kalinawalsjakoff hat kostenlosen Webspace.

    Langsamer Webspace und lahme MySQL anbindung :wave::wave:
  4. 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.
  5. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Das Script liegt nicht bei Lima. Wollte es hier mal testen aber zz. kann man nichts uploaden.
  6. Warum willst du überhaupt dein Scipt verlangsamen?
  7. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    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...
  8. 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?
  9. 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.
  10. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    <?php 
    	set_time_limit(0);
    	
    	for($i = 0; $i < 4; $i++)
    	{
    		echo $i;
    		sleep(10);
    	}
    ?>


    Er bricht bei diesem Code bei ~37 Sekunden ab.
  11. 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?
  12. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    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?!
  13. silecom schrieb:
    Das mit der 0 ist mir klar, ich wollte für diesen Testzweck nur verhindern, dass es irgendeine maximale Ausführungszeit gibt.
    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.


    silecom schrieb:
    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?!
    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.
  14. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    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.
  15. Kommentiere die Schleife aus, und schau, was ausgegeben wird.
  16. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    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!
  17. 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)
  18. 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.
  19. .htaccess:

    php_flag display_errors on


    Sonst raten wir uns hier noch einen Wolf...
  20. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    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
  21. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!