PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   Apache HTTP-Server (http://www.selfphp.de/forum/forumdisplay.php?f=23)
-   -   Server bricht Sciptlaufzeit ab (http://www.selfphp.de/forum/showthread.php?t=25474)

Doc_McSky 09.01.2015 11:31:01

Server bricht Sciptlaufzeit ab
 
Hallo Leute,

ich habe ein kleines Problem mit der Verarbeitung großer Datenmengen auf unserem gemanagten Webserver.
Ich habe eine riesen Datandatei eines Versenders bekommen, diese ist mal eben gute 400MB groß. Sie ist auf den Server geladen und muss nun ausgelesen, interpretiert, verarbeitet und in die SQL Datenbank geschrieben werden.

Das Problem ist, das der Server offensichtlich nicht genug Zeit aufwendet um dies zu tun und bricht irgendwann ab und gibt dem Browser die Fehlermeldung 500 zurück.
Die Verabreitung in die diversen Datenbanktabellen läuft bis dahin einwandfrei, aber es sind halt einige Millionen Einträge (zusammengerechnet).

Ich weiß, jetzt kommt sofort wieder die Anmerkung die "max_execution_time" des Servers zu prüfen. Naja, habe ich gemacht, unser Hetzner Sever hat da gar keinen Wert vorgegeben, Laufzeit also offen, nix 10, 30, 60 Sekunden, damit wäre ich ja gerade mal zu 10% fertig.

Nein, nein, der Server läuft immer so gute 7:30 Minuten, in der Zeit kann ich auch sehen wie die SQL Datenbank sich reichlich füllt, aber ungefähr nach dieser Zeit ist Schluß. Diese Einstellung gibt die Variable max_execution_time gar nicht vor, der Abbruch muss also von woanders her erfolgen.

Wo gibt es bei einem Webserver noch Abbruchvariablen, wie kann ich ihm sagen arbeite bis du fertig bist und wenn du ne Stunde brauchst?
Oder ist das ein lokales Problem des Browsers, bricht der irgendwann ab und sendet dem Server verdeckt ein Signal "komm lass sein, bringt nix" oder so?
Wo finde ich nun den Schuldigen für den Abbruch?

Wäre schön wenn mir da jemand helfen könnte, Danke im Voraus.

Gruß
Doc

pguser 16.01.2015 07:27:04

AW: Server bricht Sciptlaufzeit ab
 
Zitat:

Zitat von Doc_McSky (Beitrag 147374)
Hallo Leute,

ich habe ein kleines Problem mit der Verarbeitung großer Datenmengen auf unserem gemanagten Webserver.

Gemanaged also, ja?

Zitat:

Wo finde ich nun den Schuldigen für den Abbruch?
Im Log. Auf dem Server. FastCGI? Da gibt es auch noch Parameter. Wenn das gemanaged ist, dann sollte der tech. Support da helfen können. Ob das für Hetzner zutrifft weiß ich aber nicht.

Davon abgesehen: das, was Du vorhast, macht man besser in der CLI.

Ckaos 16.01.2015 07:50:09

AW: Server bricht Sciptlaufzeit ab
 
Hi,

Zitat:

Ich habe eine riesen Datandatei eines Versenders bekommen, diese ist mal eben gute 400MB groß
Zwei Möglichkeiten:
1. wie pguser sagt per CLI und z.B. Load Data (cron)
2. Batch mit Load Data (cron)

MfG

CKaos

Doc_McSky 20.01.2015 12:12:11

AW: Server bricht Sciptlaufzeit ab
 
Hallo,

vielen Dank für die Antworten, dachte schon da traut sich keiner ran, aber eure Ideen waren sehr gut.

Habe meine Routinen jetzt mal per FastCGI als Cronjob direkt vom Server ausgeführt und was soll ich sagen: funzt. ;)

Kann mir denn jemand erklären was da anders ist?

Also zum einen hat er problemlos alles durchgearbeitet UND er war bereits nach knapp 5 Minuten fertig!
Wie gesagt, die gleiche PHP Routine von einem Browser aus am Server angestoßen arbeitet gute 7:30 Minuten und ist dann gerade zur Hälfte fertig, der cron wesentlich schneller mit allem.

Hält der Server mit dem jeweiligen Clientbrowser irgendeine Kommunikation offen von der der User nur nichts mitbekommt oder was klaut da die Zeit?

Also das wäre jetzt nur Antwort+, ich danke für die jetzigen, denn die brachten jedenfalls das gewünschte Ergebnis. :-D

Gruß
Doc

pguser 20.01.2015 17:49:25

AW: Server bricht Sciptlaufzeit ab
 
Zitat:

Zitat von Doc_McSky (Beitrag 147427)
Kann mir denn jemand erklären was da anders ist?

Im Prinzip alles.

sysop 22.01.2015 12:59:03

AW: Server bricht Sciptlaufzeit ab
 
Zitat:

Zitat von Doc_McSky (Beitrag 147427)
...
Kann mir denn jemand erklären was da anders ist?
...
Hält der Server mit dem jeweiligen Clientbrowser irgendeine Kommunikation offen von der der User nur nichts mitbekommt oder was klaut da die Zeit?
...

Über den Webserver geht einfach alles anders.

Sehr vereinfacht stelle man sich das so vor:
Die Daten werden nun direkt verarbeitet und nicht mehr ausgelesen, vom Webserver in den Parser geschickt, dort ausgewertet, an die Server-Module weiter geleitet, wieder interpretiert und dann endlich verarbeitet. Der Webserver ist ausserdem so konfiguriert, dass er nur eine limitierte Anzahl an Instanzen zulässt.

Und ein wesentlicher Vorteil:
Die CLI/CGI hat eine eigene php.ini, in der man Umgebungsvariablen nabhängig von denen des Webservers einstellen kann.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:40:57 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.