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

  • [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?

  • #2
    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?..

    Kommentar


    • #3
      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.

      Kommentar


      • #4
        Kannst du's per CLI machen? Dann gäb's ein set_time_limit(0);

        Kommentar


        • #5
          Notfalls:
          http://php3.de/set-time-limit

          Kommentar


          • #6
            Zitat von Zergling
            Per Browser hilft ihm das nichts, wenn der Browser einen Timeout liefert.

            Kommentar


            • #7
              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...

              Kommentar


              • #8
                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().

                Kommentar


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

                  Kommentar


                  • #10
                    Man könnte das Script auch im Hintergrund laufen lassen, sodass der Browser ganz normal weiter läuft.

                    Kommentar


                    • #11
                      huh? Erklären bitte :wink:

                      Kommentar


                      • #12
                        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.

                        Kommentar


                        • #13
                          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.

                          Kommentar

                          Lädt...
                          X