[Funktion] PHP-Script bricht immer ab 1&1

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

  • [Funktion] PHP-Script bricht immer ab 1&1

    Hallo,
    habe mit der Suche nichts passendes gefunden, daher hier meine Frage:

    Ich habe auf dem 1&1 Webspace per PHP alle paar Tage eine Datenpflege durchzuführen. Das sind im wesentlichen search and replace Aufgaben bei einigen hundert Dateien mit jeweils 30kB. Nach ca. 10 Dateien wird das Script abgebrochen. Ich vermute es wird zuviel rechenzeit beansprucht.

    Wie kann ich diese Aufgabe stückeln? Gibt es eine Möglichkeit in das Script selbst eine Pause (mit time() Abfrage?) einzubauen, die das Problem löst?

    Gruss
    Lothar

  • #2
    lies das verzeichnis mittels while-scleife ein ...
    nach jeweils 20 (z.B.) dateien rufst du das skript neu auf und startest beim neuen Start-Index.
    Da sich die sortierung nicht ändern sollte, ist die reihenfolge des enlesens der datei auch gleich.

    du musst dann nur den startindex, entweder mit 'ner SESSION variable oder GET-Variable für die neue Startposition holen. Alle Deteien davor (also die abgearbeiteten) überspringst du dann einfach in der while-schleife.

    wenn du die max_execution_time ändern kannst, erübrigt sich das natürlich

    Kommentar


    • #3
      9 abarbeiten und neuladen, würde ich vorschlagen
      du packst deine ganzen Dateien in nen Array
      hier ein kleines Bsp.
      PHP-Code:
      $dateien = array(datei1,datei2....);
      if(isset(
      $_GET['y']))
      {
      $y $_GET['y'];
      }
      else
      {
      $y 0
      }
      $x $y+9;
      for(
      $y=$x;$y<=$x;$y++)
                 {
                     
      mache was;
                  }
      if(
      count($dateien) <= $x)
      {
      header("loaction:site.php?y=$x");

      Für Rechtschreibfehler übernehme ich keine Haftung!

      Kommentar


      • #4
        wenn du sicher bist, dass dein script sauber läuft, kannst du auch das time-limit nach oben schrauben.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Das Neuladen müsste dann mit einem anderen Script gemacht werden? Wichtig ist, das der ganze Vorgang mit einem Knopfdruck ausgeführt werden kann.

          Leider ändert sich während der Abarbeitung auch das directory, da neue Dateien erzeugt werden:

          vorher: datei1, datei 2, datei3

          dann: Suche Begriffe a,b,c in datei1 und ersetze diese duch ax,bx,cx und schreibe das Ergebnis in die neue Datei dateixyz1.

          Das mache für alle Dateien.
          ---------------------

          Lothar

          Kommentar


          • #6
            wie gesagt......
            Original geschrieben von Abraxax
            wenn du sicher bist, dass dein script sauber läuft, kannst du auch das time-limit nach oben schrauben.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Wie schraube ich bei 1&1 das Timelimit hoch?

              Lothar

              Kommentar


              • #8
                Da wirst du nicht drangelasen, wenn du nur hosten lässt, oder hast du nen root zugang zum server?
                Für Rechtschreibfehler übernehme ich keine Haftung!

                Kommentar


                • #9
                  Ich lasse dort nur hosten.

                  Lothar

                  Kommentar


                  • #10
                    Original geschrieben von loebbeshop
                    Wie schraube ich bei 1&1 das Timelimit hoch?
                    http://de.php.net/manual/de/function.set-time-limit.php
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Danke,
                      ich glaube das wird in meinem Fall nicht klappen. Die max. Execution Time ist 50000, ich nehme an das sind 50 Sekunden. Hier der Link zu den PHP Einstelllungen des Servers:

                      http://faq.puretec.de/skripte/php/6.php

                      Kommentar


                      • #12
                        ich nehme auch an, dass es sekunden sind. laut void set_time_limit ( int seconds) werden jedoch sekunden verwendet. was bei 50.000 sec bei 13,8888.... tagen liegt. das ist schon sehr dumm.. wenn man von sekunden ausgeht. und ich habe das eben bei mir gecheckt. da steht eine 30 drin, wie es sich gehört.

                        aber teste es mal mit der fkt, ob es eine besserung in deinem script gibt. ich denke zwar nciht, aber zumindest könntest du unlimited time haben... knapp 14 tage sollten ja reichen...
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          Ja.... so lange wollte ich eigentlich auch nicht warten

                          Das Script läuft fehlerfrei, aber ich könnte gut und gerne auch ein paar Millisekunden zwischen den Ausführungen warten.

                          @Damien1984
                          Ich bin ein PHP Frischling. Was macht die letzte Zeile mit dem header() genau? Das wird doch zum Browser geschickt, oder?

                          Wenn ich Deine Schleife mit den 9 Dateien sozusagen als Arbeitsscript nehme, wie bekomme ich es dann hin, dieses Script solange neu starten zu lassen, bis alle Dateien abgearbeitet sind?

                          Lothar

                          Kommentar


                          • #14
                            Der HEader läd Das Script neu und mit y= wir der nächste Startpunkt weitergegeben, damit das Script da weitermacht, wo es aufgehört hat.

                            Das Script hört von allein auf, wenn der Array durch ist.
                            Für Rechtschreibfehler übernehme ich keine Haftung!

                            Kommentar


                            • #15
                              Danke,
                              ich werde mich morgen damit weiter beschäftigen.

                              Lothar

                              Kommentar

                              Lädt...
                              X