Ankündigung

Einklappen
Keine Ankündigung bisher.

Script bricht ab - max_execution_time?

Einklappen

Neue Werbung 2019

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

  • Script bricht ab - max_execution_time?

    Guten Morgen alle zusammen,

    ich hab da mal wieder ein Problem.

    Ich habe ein Script, welches zu $var_anzahl Suchmaschinen in Kombination mit $var_Anzahl Keywords die Platzierungen checkt. Das beansprucht natürlich eine Menge Zeit (max ca. 30min)

    Leider bricht das Script nach kurzer Zeit ab. Nun habe ich versucht, mit set_time_limit(0) das Problem in den Griff zu bekommen - Kein Erfolg.
    Dann habe ich in der PHP.ini die max_execution_time hochgesetzt- auch kein Erfolg.

    Und nun?

    Gruss Drieling

    // Edit: In der PHPInfo steht auch mein veränderter Wert (1800) drin...

  • #2
    Sofern du das Script über den Browser aufrufst kommt evtl von da der Timeout ?

    Kommentar


    • #3
      Zitat von Papst Beitrag anzeigen
      Sofern du das Script über den Browser aufrufst kommt evtl von da der Timeout ?
      Da ein STATUS 200 zurückgeschickt wird, glaube ich nicht, dass der Browser abbricht. Kann mich aber auch irren.

      Kommentar


      • #4
        Der Browser bricht das Script nicht ab, es liegt schon am Server. Ich vermute grad, dass es mit den Apache Einstellungen zusammen liegt, hat da jemand eine Idee? Vor allem ob man die Einstellungen irgendwie (temporär) ändern kann, ohne an die httpd.conf ran zu müssen?

        Kommentar


        • #5
          Zitat von drieling Beitrag anzeigen
          Der Browser bricht das Script nicht ab, es liegt schon am Server.
          TCP/IP beendet eine Verbindung nach fünf Minuten Inaktivität. Um die Connection zu erhalten, bieten sich in PHP leider nur wenige Möglichkeiten; eine probate Lösung ist, in regelmäßigen Abständen kleiner als 5 Minuten ein Zeichen auszugeben und den Ausgabepuffer zu flush()en. Leider stehen die Möglichkeiten professioneller Programmiersprachen, so etwas mit fork() oder Multithreading zu lösen, unter PHP nicht zur Verfügung.

          Ansonsten würde ich mal ins Webserver-ErrorLog schauen und das Skript ggf. auch mal auf der Kommandozeile aufrufen. Das kann Aufschluß darüber geben, warum der Prozeß tatsächlich abgebrochen wird.

          Kommentar


          • #6
            Zitat von drieling Beitrag anzeigen
            Dann habe ich in der PHP.ini die max_execution_time hochgesetzt- auch kein Erfolg.
            Tja, dann wird wohl Dein Browser verhungert sein.

            Und nun?
            Bei 30 Minuten? Sowas kannste eigentlich nur in der Kommandozeile erledigen (CLI) und schickst dem User ne Email, ne SMS oder ne Brieftaube, wenn ein Ergebnis vorliegt.

            Kommentar


            • #7
              Oder wenn es denn unbedingt per Browser sein muss, teilst Du das Problem in kleine Schritte auf, die einzeln in akzeptabler Zeit bearbeitet werden können. Wenn Du X Suchbegriffe und Y Suchmaschinen hast, kannst Du jedem Suchbegriff eine Zahl zuordnen X1,X2, X3 und dann das Skript mit http://.../skript.php?begriff=3 aufrufen. Das arbeitet dann alle Y Suchmaschinen mit dem passenden Suchbegriff X3 ab, schreibt vielleicht noch irgendwelche Statusmeldungen und am Ende
              Code:
              <script>window.location="http://..../skript.php?begriff=4"</script>
              .

              Kommentar


              • #8
                Also vielen Dank erstmal.

                Problem wurde gelöst indem es auf einem lokalen Webserver läuft und nicht mehr Online. Somit habe ich nun direkt auf die Configs Zugriff und es läuft

                Kommentar


                • #9
                  Wer sowas nicht lokal laufen alssen möchte /kann, könnte versuchen, das script in viele kleine Aufrufe des selben scripts aufzuteilen. D.h. wenn ich x-tausend Suchwörter püfen will, prüfe ich immer nur eins. schreibe meine ergebnisse ggf in eine DB / Datei, merke mir die Position des Prüfwerts und rufe das selbe script via Header wieder auf, nur diesmal mit Position der Prüfwerts + 1 . Das klappt natürlich nicht bei allen Problemstellungen, aber wenn immer wieder die selbe Aktion nur mit verschiedenen Parametern ausgeführtw ird, kann so evt das time_limit umgangen werden. Das ganze kann bei Bedarf auch über mehrere Server rotieren, wobei das Skript immer seinen klon auf dem nächsten Server anstößt.

                  Kommentar


                  • #10
                    ^^ wäre eine Lösung, aber da es funktioniert und die lokale Variante nicht tragisch ist, wäre der Aufwand für diese Lösung viel zu groß...

                    Aber der Ansatz gefällt mir gut (sollte man sich für die nächste Version mal überlegen).

                    Kommentar

                    Lädt...
                    X