Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP Script mit langer Laufzeit

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema [Erledigt] PHP Script mit langer Laufzeit.

    [Erledigt] PHP Script mit langer Laufzeit

    Hallo,

    ich muss etwas programmieren und wollte mal fragen ob sich PHP dafür überhaupt eignet. Und zwar geht es um ein PHP Script, dass Datensätze / Zeilen in eine Datei schreiben soll... die Daten setzen sich dabei aus zwei - drei SELECTS (pro ausgegebener Zeile!) aus einem Microsoft SQL Server zusammen. Das können dann 1500+ Zeilen werden...

    Ich hab schon etwas rumprogrammiert und bekam dann nach 30 Sekunden einen Time Out. Hab den dann in der php.ini hochgestellt, hat aber letztendlich auch nicht viel gebracht, da ich nach fünf Minuten einen CGI Timeout bekommen habe (IIS). Ich hab gerade mal ein bischen gegoogelt und gesehn, dass man den wohl auch hochsetzen kann.

    Ich mach mir jetzt trotzdem ein bischen Gedanken ob PHP dafür überhaupt die richtige Wahl war. Das Problem ist, dass die Sache schnell fertig sein muss und ich mich mit PHP noch am besten auskenne. Würde ich, dass mit JAVA programmieren würde es sicher um einiges länger dauern.

    Daher meine Frage -> Kann man das mit PHP gut durchziehen, oder ist es eine absolut falsche Wahl für so ein Script?

  • axo
    antwortet
    ich glaube eher, dass die datenbank mal wieder nicht ordentlich indiziert ist.... 1500 zeilen aus einer datenbank zu holen sollte unter 1 sekunde dauern. darüberhinaus kann ich mir keinen einzigen sinnvollen grund vorstellen, nochmal je zwei selects innen zu machen, wenn man JOIN hat... außerdem könnte man direkt in der datenbank ein VIEW aufbauen, um die unter-anfragen nicht mit php machen zu müssen, oder eine temporäre tabelle verwenden....

    alles in allem halte ich aufgrund der bisherigen angaben das problem für innerhalb von 5 sekunden machbar, wahrscheinlich sogar schneller.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von xabbuh
    Zitat von Saraneus
    Per Browser hilft ihm das nichts, wenn der Browser einen Timeout liefert.
    Dafür gibt es ja dann auch noch ignore_user_abort().
    Dann kann er aber nicht feststellen, wann das Skript fertig ist, um das Ergebnis auszugeben.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    huh? Erklären bitte :wink:

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Man könnte das Script auch im Hintergrund laufen lassen, sodass der Browser ganz normal weiter läuft.

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Wenn dus mit den genannten Funktionen schneller hinkriegst als ohne PHP, dann ist PHP dafür geeignet
    Der Zweck heiligt die Mittel.

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Zitat von Saraneus
    Per Browser hilft ihm das nichts, wenn der Browser einen Timeout liefert.
    Dafür gibt es ja dann auch noch ignore_user_abort().

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Es gab einen CGI Timeout, dass kann man aber wohl auch hochstellen. Hab schon was gefunden...

    Ich will nur mal wissen ob PHP für dieses "Projekt" geeignet ist, oder ob PHP damit überlastet ist... also 1500 Zeilen durchzurattern (Datei auslesen) + 2 Selects + in eine Datei schreiben usw. Darum gehts mir...

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von Zergling
    Per Browser hilft ihm das nichts, wenn der Browser einen Timeout liefert.

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Notfalls:
    http://php3.de/set-time-limit

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Kannst du's per CLI machen? Dann gäb's ein set_time_limit(0);

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Also ich habe eine Ausgangsdatei in der in jeder Zeile verschiedene Nummern stehen. Abhängig von den Zeilen in dieser Datei läuft dann mein Script. Das können allerdings jede Menge Zeilen werden, wie gesagt: 1500+

    Ich nehme dann aus jeder Zeile eine Nummer und mache abhängig von der einen SELECT auf die erste Tabelle. Dort hole mir dann Daten raus und mit einem Wert von diesen Daten gehe ich auf die nächste Tabelle. Ich sammel mir also Daten zusammen, die dann später als Datensatz / Zeile in eine neue Datei geschrieben werden. Das mache ich dann für jede Zeile und wie gesagt: Das Script läuft länger als 5 Minuten.

    Ich könnte sicher auch einen SELECT daraus machen, aber würde das dann viel schneller laufen?

    Würde aber allgemein mal gerne wissen ob PHP damit nicht überlastet ist... bzw. die falsche Wahl.

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Kannst du die Informationen denn nicht mit wenigen SELECTs komplett aus der DB holen (also z.B. ohne Bedingung) und in einen Array lesen, auf den du dann eben 2-3x pro Zeile zugreifst?

    Wir brauchen ein paar Infos mehr, wenn wir dir wirklich helfen sollen. Welche Daten stehen wie in der DB und welche brauchst du pro Zeile?..

    Einen Kommentar schreiben:

Lädt...
X