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

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

  • #16
    Ich bekomme den Wiederaufruf des Scripts nicht hin. So sieht die Hauptschleife des Skripts aus:

    PHP-Code:
        initProd($txtfile,&$t04,&$t05,&$t07,&$t13,&$t15);  // Initialisiere die globalen Produkt-Arrays

        
    if(isset($_GET['y'])) $y $_GET['y'];
        else 
    $y 0;
        
    $x $y 10;                                       // Immer nur 10 Dateien bearbeiten         
        
    $pdnew desc1toword($t05,$t04,$x,$y);               // Neue Dateinamen erzeugen

        
    echo $y." ".$x." ".count($t15)."<br>";
        for(
    $i=$y;$i<=$x;$i++) {
            echo 
    $t15[$i]." --> ".$pdnew[$i].".htm<br>";
        };
        if(
    $x <= count($t15)) {                               // Sind noch Dateien zu bearbeiten?
            
    header("location: http://www.loebbeshop.de/test/konverter4.php?y=$x");   // Script nochmal aufrufen
        

    desc1toword erledigt die eigentliche Arbeit, im Array $t15 sind alle zu bearbeitenden Dateien mit ihrem Namen hinterlegt (333 Stück). Es sollen immer 10 auf einmal bearbeitet werden. Leider wird nur der erste 10er Block bearbeitet. Zum Debugging habe ich $y, $x und count($t15) bei jedem Aufruf auf den Schirm ausgegeben. Es erscheint 1mal 0,10,333.

    @damian1984
    Warum reloaded das script nicht?

    Lothar
    Zuletzt geändert von loebbeshop; 24.06.2003, 21:29.

    Kommentar


    • #17
      Also gebe ich mir mal selbst eine Teilantwort

      vor header() darf keine Browserausgabe erfolgen. Ich habe also jetz mal den ganzen HTML-Rumpf gelöscht, steht also nur noch:

      <?php
      Code
      ?>

      Hinter initProd() habe ich ob_start(); geschrieben

      und ganz am Ende hinter dem letzten } ein ob_end_flush();

      Als Ausgabe erhalte ich nun 10, 20, 333, d.h. das Script ist einmal selbst aufgerufen worden.

      Ich könnte zwar die echos ganz rausnehmen, aber erhalte dann keinerlei Rückmeldung vom script. Wenn das Ding einige Minuten rödelt sollte da schon eine Kontrolle sein.

      Hat jemand eine Idee?
      Zuletzt geändert von loebbeshop; 24.06.2003, 21:28.

      Kommentar


      • #18
        Original geschrieben von loebbeshop
        Hat jemand eine Idee?
        spontan ein würgaround:

        - schmeiss die echos aus der fkt
        - header() verweist auf eine seite, wie:
        PHP-Code:
        <html>
        <head>
        <meta http-equiv="refresh" content="10; URL=dieseite.php?y=<? echo $_GET['x'];?>">
        </head>
        <body>
        <? echo $_GET['x'];?>
        </body>
        </html>
        damit hast du eine ausgabe UND schiebst das script über den refresh neu an.
        Kissolino.com

        Kommentar


        • #19
          Hmm,

          jetzt kriege ich eine Fehlermeldung interner Server Error 500, das Skript konnte nicht ausgeführt werden. In der Adresszeile steht:

          http://www.loebbeshop.de/test/konverter5.php?y=<?%20echo%20$_GET['x']

          im meta-refresh ist die Zeile vollständig, mit ['x'];?>"

          Also:
          1. Ich habe ein html-datei mein.htm erstellt mit dem besagten meta-refresh.
          2. Im PHP script steht nur noch:
          PHP-Code:
          initProd($txtfile,&$t04,&$t05,&$t07,&$t13,&$t15);  // Initialisiere die globalen Produkt-Arrays

          if(isset($_GET['y'])) $y $_GET['y'];
          else 
          $y 0;
          $x $y 10;                                       // Immer nur 10 Dateien bearbeiten         
          $pdnew desc1toword($t05,$t04,$x,$y);               // Neue Dateinamen erzeugen

          header("location: http://www.loebbeshop.de/test/mein.htm?y=$x"); 
          Lothar
          Zuletzt geändert von loebbeshop; 24.06.2003, 21:48.

          Kommentar


          • #20
            du musst im header-befehl auf ne php-seite weiterleiten, da du da ja php verwendest
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #21
              wäre schon gut ne datei, die php ausführen soll als *.php abzuspeichern. es sei denn der server parst html als php
              auserdem kann ich dem script-schnippsel nicht ganz folgen
              sollte es nicht so aussehen:
              PHP-Code:
              // => initProd($txtfile,&$t04,&$t05,&$t07,&$t13,&$t15); was macht die fkt ohne rückgabewert ??

              if(isset($_GET['y'])) { $y $_GET['y']; }
              else { 
              $y 0$x $y 10; }

              for(
              $i=$y;$i<=$x;$i++) 
              {
              // schreibe datei oder trage in db ein
              };
              if(
              bedingung)  // klug wäre hier zu prüfen, ob $x kleiner ist als die max. Anzahl der zu bearbeitenden dateien
              {                               
                  
              header("location: [url]http://www.loebbeshop.de/test/mein.php?y=[/url]$x");  
              exit;
              }
              else
              {
              echo 
              "fertig";

              Kissolino.com

              Kommentar


              • #22
                Danke,

                ich habe mein.htm jetzt in mein.php umbenannt. Der Reload klappt jetzt.

                - Allerdings keine Ausgabe auf dem Bildschirm,
                - In der Browserzeile steht immer ....php?y=10
                - In der Statuszeile immer bei jedem reload lade .....php?y=

                Irgendwie sollte doch der Parameter hochzählen und auch etwas auf dem Bildschirm erscheinen.

                Im Body habe ich:
                PHP-Code:
                <? echo $_GET['x'];?>
                @Wurzel
                danke, ich hatte wohl zuviel auskommentiert. Hier nochmal der aktuelle Quelltext. Die Funktion hat schon Rückgabewerte (Siehe das & vor dem Variablennamen).

                PHP-Code:
                initProd($txtfile,&$t04,&$t05,&$t07,&$t13,&$t15);
                if(isset(
                $_GET['y'])) $y $_GET['y'];
                else 
                $y 0;

                $x $y 10;   // Immer nur 10 Dateien bearbeiten         

                for($i=$y;$i<=$x;$i++) {
                $pdnew desc1toword($t05,$t04,$x,$y);   // Neue Dateinamen erzeugen
                };
                if(
                $x <= count($t15)) {   // Sind noch Dateien zu bearbeiten?
                header("location: http://www.loebbeshop.de/test/mein.php?y=$x");
                exit;
                }
                else echo 
                "fertig"

                Lothar
                Zuletzt geändert von loebbeshop; 24.06.2003, 22:17.

                Kommentar


                • #23
                  tuts das jetzt komplett oder nicht.
                  hab grad ein bischen den überblick verloren
                  Kissolino.com

                  Kommentar


                  • #24
                    Ich steh immer noch auf dem Schlauch. Das Skript tuts nicht.

                    1. Durch den meta-refresh in der datei mein.php habe ich zwar eine Schleife, aber die Parameter werden nicht richtig an das PHP-script übergeben, so dass ich hier eine Endlosschleife ohne jegliche Ausgabe habe.

                    In der browseradressleiste steht immer der Parameter y=10, aufgerufen wird die konverter.php mit dem eigentlichen PHP-script ohne Parameter, in der Statusleiste des Browsers steht y=

                    Hier nochmal das meta-Tag in mein.php:

                    <meta http-equiv="refresh" content="1; URL=http://www.loebbeshop.de/test/konverter5.php?y=<? echo $_GET['x'];?>">

                    Du kannst das mal aufrufen unter
                    www.loebbeshop.de/test/konni.php

                    Kommentar


                    • #25
                      dann kennt dein PHP $_GET nicht

                      probier mal $HTTP_GET_VARS['y']

                      wenn das auch nich geht nimm direkt $y
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #26
                        Werd ich gleich mal probieren. Das Skript soll später auf allen Servern mit PHP4 laufen. Muss ich da sonst noch etwas beachten? Hier die Infos zu meinem installierten PHP. Kann man daraus erkennen ob $_GET geht?

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


                        -------------
                        Problem gelöst !!!!!!!!!

                        Der Fehler ist einfach zu blöd. Statt y habe ich ich mit $_GET den Wert (also x) abgefragt. Das kommt davon wenn man Code einfach ohne Nachdenken übernimmt, bzw. nicht beschreibende Variablennamen nimmt.

                        Nochmal meinen herzlichen Dank an Alle die fleissig mitgeholfen haben.

                        Lothar (........bis zum nächsten Problem )
                        Zuletzt geändert von loebbeshop; 24.06.2003, 23:33.

                        Kommentar


                        • #27
                          bei dieser php-version funktioniert $_GET eigentlich.

                          mache mal
                          PHP-Code:
                          echo '<pre>';
                          print_r($_GET);
                          echo 
                          '</pre>'
                          zum test in dein script. dann hast du die daten, die übergeben werden als testanzeige.
                          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


                          • #28
                            $_GET geht bei dir

                            hab grad was gesehen:
                            PHP-Code:
                            header("location: http://www.loebbeshop.de/test/mein.php?y=$x"
                            Code:
                            <meta http-equiv="refresh" content="1; URL=http://www.loebbeshop.de/test/konverter5.php?y=<? echo $_GET['x'];?>">
                            das kann so nichtg gehen, da in mein.php keine variable $_GET['x'] vorhanden ist, sondern eine variable $_GET['y']

                            <meta http-equiv="refresh" content="1; URL=http://www.loebbeshop.de/test/konverter5.php?y=<? echo $_GET['y'];?>"> sollte gehen


                            mach im body mal statt
                            PHP-Code:
                            <? echo $_GET['x'];?>
                            das hier
                            PHP-Code:
                            <?php
                            print_r
                            ($_GET); 
                            ?>
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #29
                              Genauso ist es!!! Siehe meine bearbeitetes Posting von oben.

                              herzliche Dank, jetzt löppts.

                              Lothar

                              Kommentar


                              • #30
                                sorry, hab halt manchmal ne x-y schwäche
                                Kissolino.com

                                Kommentar

                                Lädt...
                                X