Laufzeit des Scriptes verlängern
Laufzeit des Scriptes verlängern
am 20.06.2006 08:45:43 von renemewes
Hallo,
ich mit Hilfe eines PHP Scripts PDF Files. Hierzu habe ich folgenden
Weg gewählt.
PHP Script holt sich die Daten aus einer mySQL DB und generiert via
ps_lib ein PS-File. Dieses wird anschließend via exec('ps2pdf ...
...') in ein PDF File konvertiert und via header('...') betrachtet. Da
ich keine Ausgabe vor dem Ende wegen meiner header-FKT machen kann ist
mir das Script immer abgebrochen (Mehr als 100 Seiten PDF...).
Ich hab dann in der php.ini folgendes geändert.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
max_execution_time =3D 300
max_input_time =3D 300
memory_limit =3D 60M
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nun gehts ein wenig länger. Aber gestern ist das Script wieder hängen
geblieben als ich einmal 200 Seiten generieren musste. Das Script
läuft ca. 50seks.
Hat einer Erfahrung mit solch Problemen?! Gibts dort noch andere Wege?!
LG,
Ren=E9
Re: Laufzeit des Scriptes verlängern
am 20.06.2006 11:03:53 von Ulf Kadner
renemewes wrote:
^^ Bitte Deinen korrekten Namen angeben. (Anstandssache)
> ich mit Hilfe eines PHP Scripts PDF Files.
Du mit Script = PDF-Dateien? Was willst Du denn sagen? ;-)
> PHP Script holt sich die Daten aus einer mySQL DB und generiert via
> ps_lib ein PS-File. Dieses wird anschließend via exec('ps2pdf ...
> ...') in ein PDF File konvertiert und via header('...') betrachtet.
Sicherlich unter zu Hilfenahme der header-Funktion an den Browser
ausgegeben.
> Ich hab dann in der php.ini folgendes geändert.
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> max_execution_time = 300
> max_input_time = 300
Aus welchen Grund setzt Du denn Die Zeit hoch, die ein Script zum
entgegen nehmen eines Requests laufen darf? Das macht doch keinerlei Sinn.
> memory_limit = 60M
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Nun gehts ein wenig länger. Aber gestern ist das Script wieder hängen
> geblieben als ich einmal 200 Seiten generieren musste. Das Script
> läuft ca. 50seks.
Dann must Du halt alles (max_execution_time + memory_limit) so erhoehen,
das es den maximalen Anforderungen gerecht wird. Wie diese sind wird Dir
hier kaum jemand sagen koennen.
> Hat einer Erfahrung mit solch Problemen?! Gibts dort noch andere Wege?!
Ich weis ja nicht genau was hinter dem steckt, was Du da machst. Aber in
den meisten Fällen gibt einen besseren weg.
Einen User 50 sek (oder länger) warten zu lassen macht eigentlich keinen
Sinn. (Es sei den er bekommt Geld dafür ;-))
Da must Du schon schreiben was genau Du machst und Warum.
MfG, Ulf
Re: Laufzeit des Scriptes verlängern
am 20.06.2006 11:39:16 von Christian Schmelzer
renemewes wrote:
> Hallo,
>
> ich mit Hilfe eines PHP Scripts PDF Files. Hierzu habe ich folgenden
> Weg gewählt.
> PHP Script holt sich die Daten aus einer mySQL DB und generiert via
> ps_lib ein PS-File. Dieses wird anschließend via exec('ps2pdf ...
> ...') in ein PDF File konvertiert und via header('...') betrachtet. Da
> ich keine Ausgabe vor dem Ende wegen meiner header-FKT machen kann ist
> mir das Script immer abgebrochen (Mehr als 100 Seiten PDF...).
>
> Ich hab dann in der php.ini folgendes geändert.
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> max_execution_time = 300
> max_input_time = 300
> memory_limit = 60M
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Nun gehts ein wenig länger. Aber gestern ist das Script wieder hängen
> geblieben als ich einmal 200 Seiten generieren musste. Das Script
> läuft ca. 50seks.
>
> Hat einer Erfahrung mit solch Problemen?! Gibts dort noch andere
> Wege?!
>
Hallo,
ja, lass deine Benutzer nicht 50 Sekunden und länger warten. Kannst du das
PDF nicht vorher generieren und das PDF dann direkt ausliefern? Oder nimm
vom Benutzer nur den "Auftrag" an dass PDF zu generieren. Generiere es
anschließend unabhängig vom Nutzer. Wenn der Vorgang abschlossen ist, muss
der Nutzer darüber noch informiert werden. Da gäbe es verschiedene Wege
(z.B. per E-Mail, oder eine Webseite fragt periodisch beim Server nach ob
das PDF fertig ist).
Ansonsten einen Weg finden, den gesamten Prozess zu beschleunigen, aber 50s
und länger sind eine Zumutung.
Christian
Re: Laufzeit des Scriptes verlängern
am 20.06.2006 19:09:59 von Ron Metten
renemewes schrieb:
>
> Hat einer Erfahrung mit solch Problemen?! Gibts dort noch andere Wege?!
>
Wenn dein Skript die in der .ini eingestellte max. Prozessdauer
überschreitet, wird dies in einer expliziten Warnmeldung angezeigt.
Somit scheint diese Einstellung nicht der Grund für das Aufhängen des
Skriptes zu sein.
Ausserdem: 300s. > 50s.
Beschreibe bitte die Struktur des Skriptes etwas genauer.
Gruss,
Ron Metten
Re: Laufzeit des Scriptes verlängern
am 20.06.2006 22:05:32 von Mike
Am 19 Jun 2006 23:45:43 -0700 schrieb renemewes:
> Hallo,
>
> ich mit Hilfe eines PHP Scripts PDF Files. Hierzu habe ich folgenden
> Weg gewählt.
> PHP Script holt sich die Daten aus einer mySQL DB und generiert via
> ps_lib ein PS-File. Dieses wird anschließend via exec('ps2pdf ...
> ...') in ein PDF File konvertiert und via header('...') betrachtet. Da
> ich keine Ausgabe vor dem Ende wegen meiner header-FKT machen kann ist
> mir das Script immer abgebrochen (Mehr als 100 Seiten PDF...).
>
> Ich hab dann in der php.ini folgendes geändert.
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> max_execution_time = 300
> max_input_time = 300
> memory_limit = 60M
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Nun gehts ein wenig länger. Aber gestern ist das Script wieder hängen
> geblieben als ich einmal 200 Seiten generieren musste. Das Script
> läuft ca. 50seks.
>
> Hat einer Erfahrung mit solch Problemen?! Gibts dort noch andere Wege?!
>
> LG,
> René
Hi,
hatte damals so eine ähnliche Lösung geschrieben, die aus
JPG-Files PDF-Dateien (eine Art Bildband) generiert hat.
Bei rund 80 JPG's hatte ich eine Ausführungzeit weit
über 30 Sekunden, bis das PDF fertig war.
Die Lösung des Problems war es, nur einzelne Seiten zu
erstellen, d.h. 80 temporäre PDF's, die dann am Ende
zu einer Datei zusammengeflickt wurden.
Dadurch hat der User im Prinzip sofort Zugriff auf das
PDF (erste Seite) und die restlichen Seiten laden einfach im
Hintergrund.