Archiv verlassen und diese Seite im Standarddesign anzeigen : Timeout nach 300 Sekunden
chefdesigner 20-01-2008, 22:25 N'Abend,
habe ein Problem mit dem Timeout nach 300 Sekunden. Gibt es Möglichkeiten, diesen Timeout mit Hilfe von PHP zu umgehen?
Habe bereits etwas gegoogelt und mein Script wie folgt angepasst:
ini_set("memory_limit","1000M");
ini_set("max_execution_time","9999");
ini_set("max_input_time","9999");
set_time_limit("9999");
Hat im Hinblick auf den Timeout jedoch leider nichts gebracht. Gibt es weitere Möglichkeiten diesen Timeout zu verhindern?
Woher weißt du, dass das ein PHP Timeout ist?
PHP-Desaster 20-01-2008, 23:08 Wozu benötigst du eine Skriptausführung von 5 Minuten?
chefdesigner 20-01-2008, 23:24 @combie: Gute Frage, das weiss ich nicht. Das Script läuft ca. 300 Sekunden und hört dann auf, angezeigt wird mir eine weiße Seite, ohne Erfolgs- und ohne Fehlermeldung.
@PHP-Desaster: Weil ich sehr viele Datensätze miteinander vergleiche und die Ergebnisse in eine Datenbank speichere. Das Abgleichen und die Inserts in die Datenbank sind sehr zeitaufwändig.
hm ... und das machst du wieviel mal am Tag? Ist es nicht besser auf commandline ebene laufenzulassen?
PHP-Desaster 20-01-2008, 23:35 Aja, das wahr die Ähnlichkeits-Geschichte.
Teile den Vergleich auf, so dass nicht alle Datensätze aufmal verglichen werden.
chefdesigner 20-01-2008, 23:45 @asp2php: Das Script muss nur bei Bedarf also bei Hinzukommen neuer Modelle laufen. Also vielleicht 2 mal pro Woche, evtl. aber auch täglich. Das mit der Commandline habe ich mir auch schon überlegt, Problem war nur, dass ich nicht rausbekommen habe, wie das funktioniert.
@PHP-Desaster: Genau, die Ähnlichkeits-Geschichte. Das Aufteilen war auch schon mein Gedanke, Problem ist dabei, dass ich noch am überlegen bin, wie ich das am Besten mache. Kann ich auslesen, wann der Timeout eintrifft? Denn irgendwie muss ich ja einschätzen können, wann ich das Script stoppen muss und wo ich dann weiter machen muss.
Blackgreetz 21-01-2008, 00:04 Normal müsste man mit einer simplen Ausgabe das Timeout schon überbrücken können, oder? (bin mir nich ganz so sicher)
Dann kannste ja in deine schleife normal ne if-verzweigung machen..
like:
if($anzahl_der_bisher_vergleichten_datensätze % 500 == 0) echo "blubb";
..oder so :)
mfg
chefdesigner 21-01-2008, 00:06 @Blackgreetz: Das dachte ich ehrlich gesagt auch. Ich habe das auch schon mit einem echo versucht, allerdings brachte es leider nichts. Ich erhielt trotzdem nach 300 Sekunden eine weiße Seite.
chefdesigner 21-01-2008, 16:21 Mal ein ganz anderer Ansatz: Ist es besser den SQL-Insert direkt nach dem Vergleich durchzuführen oder die Punkte und die ID's der beiden Produkte zuerst in einem Array ablegen und das dann hinterher in die Datenbank einlesen?
Hmm, lass mal nachdenken. Ist es besser 100 Queries an die DB zu senden oder nur einen einzigen? :rolleyes:
PS: Maximale länge für Queries beachten.
chefdesigner 21-01-2008, 16:33 @Tobiaz: Wie bekomme ich einen Query bei der Anzahl an Datensätzen hin?
Selbst wenn ich erstmal nur die Daten vergleiche ohne einen Query durchzuführen überschreitet das Script den Timeout. Wie bekomm ich denn jetzt raus, woran es genau scheitert, also wo genau der Timeout stattfindet?
Ich habe schon probiert den Timeout mit einem echo nach jeden 100.000 Datensätzen zu unterbinden, war aber leider erfolglos.
@Tobiaz: Wie bekomme ich einen Query bei der Anzahl an Datensätzen hin? Da es sich nur um ein INSERT geht, solltest du einfach mal das SQL-Manual aufschlagen und dir die verschiedenen (!) Syntax für INSERT ansehen.
Wie bekomm ich denn jetzt raus, woran es genau scheitert, also wo genau der Timeout stattfindet? Sicher kennst du flush() noch nicht.
Ich habe schon probiert den Timeout mit einem echo nach jeden 100.000 Datensätzen zu unterbinden, war aber leider erfolglos. Wenn der Timeout wirklich vom Server kommt, hilft das alles imho nichts. Damit kannst du nur dem Browser mitteilen, dass er noch was zu erwarten hat.
|
-
- |