timeout nach mehreren/vielen select statements

Alles, was PHP betrifft, kann hier besprochen werden.

timeout nach mehreren/vielen select statements

Postby mster » 30. November 2007 14:34

hi,

leider habe ich im forum keinen beitrag gefunden, der mir weiterhilft ... drum hier mein problem:

ich habe ein php script, das erst aus einer tabelle alle datensätze (artikel) ausliest (ca 15000) und diese dann in schleife nochmal durchgeht. in dieser schleife werden dann nochmal 2 select statements mit sum), ... ausgeführt und das ergebnis dann in eine textdatei geschrieben.

das klappte bisher ganz gut, dauerte jedoch auch immer ca 50 minuten. auf einmal funktioniert das jedoch nicht mehr. das script bricht nach ca 60 minuten ab, gibt keinen fehler aus und erstellt natürlich auch keine datei. das mag daran liegen, dass es mit der zeit immer mehr artikel wurden und mir jetzt irgendein timeout dazwischenfunkt. leider kann ich aber in der config datei oder der php.ini keinen wert finden, der in diese zeitliche dimension passt. alle angaben darin liegen im sekunden/minutenbereich. also müssten diese irrelevant sein, das das script ja vorher auch schon ca 50 mnuten gedauert hat.

nun die frage: wo kann ich dem apache sagen, er soll unbegrenzt (oder sehr lange) an einem script arbeiten, ohne abzubrechen?

schon mal danke für nen tip!
mster
mster
 
Posts: 2
Joined: 30. November 2007 14:14

Postby Wiedmann » 30. November 2007 14:48

das script bricht nach ca 60 minuten ab,
...
leider kann ich aber in der config datei oder der php.ini keinen wert finden, der in diese zeitliche dimension passt

Hat nicht die "max_execution_time" 60 Minuten.

nun die frage: wo kann ich dem apache sagen, er soll unbegrenzt (oder sehr lange) an einem script arbeiten, ohne abzubrechen?

Mal ganz davon abgesehen, dass man so ein Script ja auch nicht über den Apachen startet.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby mster » 30. November 2007 15:12

die "max_execution_time" hat bei mir 30 (php.ini). dahinter steht allerdings: "Maximum execution time of each script, in seconds"

darunter wäre die werte:
- max_input_time
- default_socket_timeout
- mysql.connect_timeout
- mysql.timeout

all diese stehen auf 60.

ich ändere jetzt mal alle 5 parameter auf 90 und hoffe, dass es durchläuft.

oder gibts denn noch andere orte/dateien, ausser die php.ini und die httpd.conf?
mster
 
Posts: 2
Joined: 30. November 2007 14:14

Postby Scory » 01. December 2007 10:56

Da 15.000 Datensätze für einen zeitgemäßen Computer und einer "richtig" konfigurierten SQL Datenbank eher eine Lachnummer darstellt, klingt es ziemlich danach, als wenn das Script resp. die Datenschicht falsch programmiert ist.

In 50 Minuten (oder gar mehr) sollten problemlos ein paar Millionen Datensätze zu verarbeiten sein.

Diese 15.000 Datensätze können ja (als Ergebnis eines Selects) ihrerseits wieder in eine (temporäre) Tabelle geschrieben werden, ihrerseits wieder versehen mit den richtigen Indizes. Dann kann man wieder "normale" Selects drauf los lassen, die (bei richtigem Datenmodell) entsprechend zügig abgearbeitet werden. Das nur als abstrakter Hinweis, leider sehen wir hier zu wenig von der Anwendung.

Grüße
Scory
Scory
 


Return to PHP

Who is online

Users browsing this forum: No registered users and 21 guests