[gelöst] SESSION und PHP-Timeout

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

  • [gelöst] SESSION und PHP-Timeout

    Moin,

    hier geht es nicht um die SESSION Timeouts sondern, um die Timeouts von PHP!, also ich meine damit nicht, nach welcher Zeit die SESSION beendet werden soll!
    habe zu dem Thema leider nichts gefunden :-(

    und zwar habe ich ein Script, welches Daten von A nach B Konvertiert... allerdings sind dieses recht viele Daten... daher lasse ich viel per SESSION Cachen... und per if else Abfragen..., soweit so gut.

    Allerdings ist mir aufgefallen, dass wenn es bei dem Script zum TimeOut kommt, werden die Daten nicht weiter in die SESSION geschrieben...

    was allerdings in meinem Fall nicht so dolle ist...

    habe als "Lösung" überlegt, den kompletten Inhalt (oder nur teile, die in dem Step geschrieben werden) als serialize-Array [1] zu speichern. und dann wieder beim erneutem Starten der Datei einzulesen...

    nur hoffe des es evtl. eine Lösung von Haus aus gibt... nur weiss auch nicht wo nach ich bei den SuMas suchen soll, da "SESSION Timeout" ja andere Ergebnis liefert

    Gruß
    Gunah

    [1] PHP: serialize - Manual

  • #2
    Zitat von Gunah Beitrag anzeigen
    Allerdings ist mir aufgefallen, dass wenn es bei dem Script zum TimeOut kommt, werden die Daten nicht weiter in die SESSION geschrieben...
    Wie auch? Beim Timeout wird der Prozess gekillt. Das Script läuft also an irgendeiner Stelle einfach nicht weiter.

    1. Große Datenmengen sollte man nicht in der Session speichern.
    2. Gegen Timeouts hilft set_time_limit() oder das Kopieren in Chunks.

    Kommentar


    • #3
      das mit set_timeout_limit ist bekannt, bringt aber nur was bei CGI oder mod_php, bei FCGI ist man da verloren :-/, da Fast-cgi/SuEXEC einen eigenen Timeout hat. Standard ist dieser bei 40 sekunden.

      Asso, es sind keine Großen Datenmengen, und zwar wird ein array erstellt mit IDs, und dennen wird ein boolean übergeben mehr nicht...
      die Daten die verarbeitet werden sind nicht in der Session

      Gruß
      Gunah

      Kommentar


      • #4
        40 Sekunden genügen dir nicht, um ein Array mit IDs und Booleans zu füllen?! Zeig doch mal den rlevanten Code, da kann doch was nicht stimmen.

        Kommentar


        • #5
          Es wird ein Select auf der Datenbank von XTC durchgeführt:
          Code:
          -- select images
                   SELECT
                      products_id,
                      image_name,
                      image_nr
                   FROM
                      products_images
                   ORDER BY
                      products_id ASC
          mit CURL runtergeladen:
          PHP-Code:
           $ch curl_init();
                         
          curl_setopt($chCURLOPT_URL$imagepath $row['image_name']);
                         
          curl_setopt($chCURLOPT_HEADER0);
                         
          curl_setopt($chCURLOPT_BINARYTRANSFERtrue);
                         
          curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                         
          curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
                         
          $curl curl_exec($ch);
                         
          curl_close($ch);
                         if(
          $curl) {
                             
          file_put_contents($image,$curl);
                         } 
          und ein Eintrag in die SESSION gepackt mit der ID des Produktes und der Nummer des Bildes...
          im nächsten Step werden dann die Heruntergeladenen Elemente per in eine Proprietäres import script geladen (Klasse, Quellcode liegt von der Klasse nicht vor, nur eine Doku) und dort werden dann die Bilder umgewandelt, und 4 Verschiedene Ansichten erstellt...

          Kommentar


          • #6
            Wie läuft das ab, holst du erstmal alle Bilder, speicherst sie lokal und konvertierst sie dann? Oder holst du eins nach dem anderen und konvertierst es gleich? Der Codeauszug ist ein bißchen knapp gehalten.

            Kommentar


            • #7
              ne lade sie erst runter, dann kommt ein weiter Button, dann werden Sie konvertiert.

              Alles andere wäre zu heftig, also in einem Step...

              Als Zahl es sind ca. 1200 Bild Datei, von jedem werden 4 Bilder generiert.

              [ich denke mal in der Klasse wurde das mit GDlib gemacht (ist ein Import Script für ein anderes System, sprich Produkt import)]

              Kommentar


              • #8
                Zitat von Gunah Beitrag anzeigen
                dann kommt ein weiter Button
                Und der kommt noch? Dann hat das Runterladen ja schon mal geklappt.
                40s für 4800 Bilder könnte knapp werden. Aber ohne Code kann man dazu nicht viel mehr sagen.

                Kommentar


                • #9
                  PHP-Code:
                  $import->ImportArticleImages($ID$array_mit_pfad_zu_den_bildern); 
                  mehr kann ich da auch nicht liefern, wie gesagt kein offener Quellcode... ich will bei fragen auch immer Quellcode sehen, aber könnte nur den Binary-Code posten, was aber keinen Sinn macht...

                  habe es per JS gelöst, dass wenn ein timeout zum Browser kommt, wird 15 sekunden, lang gecheckt ob nicht doch was im Hintergrund läuft... und dann wird das Script neugestartet und mit einem anderen ARRAY vergleichen, wo drin steht, welche Bilder schon importiert wurden und welche nicht, das gleiche gilt bei Download...

                  Kommentar


                  • #10
                    Was ist denn "Hintergrund"?

                    Warum verarbeitest du nicht einfach x Bilder, sendest dann einen Location-Header an den Client, der das selbe Script noch einmal aufruft, aber per Parameter mitteilt mit welchem Bild nun weitergemacht werden soll?

                    Kommentar


                    • #11
                      *an kop fass*... xD

                      dank dir... für den Tipp...
                      hätte auch selber drauf kommen können...

                      Kommentar

                      Lädt...
                      X