Matt: Upload abbrechen

Hallo,

wir haben ein PHP-Script übernommen das eine Datei in ein Verzeichnis hochlädt. Ab und an kommt es vor dass der Server des Kunden keine Antwort sendet bzw. den Vorgang abbricht. Somit denkt der Kunde, dass seine Datei immernoch hochgeladen wird. (Es kommt keine Fehlerseite, der Browser rechnet und rechnet).

Nach ein paar Minuten wird er natürlich skeptisch denn es hört nicht auf zu laden.

Geht er nun auf eine andere Seite des Tools in welchem der Upload angeboten wird, wird dort wegen der Session oder des Servers keine Seite mehr geladen. Da die Session sozusagen hängt. Eine Möglichkeit wäre den Browser neuzustarten.

Wieso dass so programmiert wurde, verstehen wird nicht ;-) Den Timeout richtig setzen oder ähnliches ist uns leider untersagt. Ebenfalls die Möglichkeit mittels anderer Programmiersprachen den Upload zu steuern.

Ich würde gerne wissen ob es eine Möglichkeit gibt ein Upload abzubrechen damit die "Session" wieder freigegeben wird und der Benutzer weiterarbeiten kann, ohne den Browser neustarten zu müssen oder die Cookies/Session löschen zu müssen.

Danke

  1. Lieber Matt,

    Ich würde gerne wissen ob es eine Möglichkeit gibt ein Upload abzubrechen damit die "Session" wieder freigegeben wird und der Benutzer weiterarbeiten kann, ohne den Browser neustarten zu müssen oder die Cookies/Session löschen zu müssen.

    Du könntest das "Löschen" der Session mit einem entsprechenden Zusatz-Script erledigen, das einfach eine Art cookie-Kill an den Browser sendet, damit der das Cookie entsprechend löscht/leert. Klar, was ich meine?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Du könntest das "Löschen" der Session mit einem entsprechenden Zusatz-Script erledigen, das einfach eine Art cookie-Kill an den Browser sendet, damit der das Cookie entsprechend löscht/leert. Klar, was ich meine?

      Hi Felix,

      danke für deine Hilfe.
      Mir ist jedoch nicht ganz klar was du meinst.

      Wie sollte ich deiner Meinung nach das Skript starten? Der Benutzer kann ja nicht mehr darauf arbeiten, da sich seine Session aufgehängt hat und er somit auch kein Skript ausführen kann.

      Ich hoffe ich verstehe was du genau meinst.

      1. Lieber Matt,

        ich meinte, dass Du eine neue PHP-Datei schreibst, in der Du mittels session_start() die Session wieder aufnimmst, um sie dann zu killen. Aufrufen kannst Du dieses neue PHP Script über seine URL. Also http://www.example.org/verzeichnis/neue_php_datei_zum_session_killen.php

        Das Beispiel aus dem PHP-Manual zu session_destroy() sollte Dir weiterhelfen.

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. ich meinte, dass Du eine neue PHP-Datei schreibst, in der Du mittels session_start() die Session wieder aufnimmst, um sie dann zu killen. Aufrufen kannst Du dieses neue PHP Script über seine URL. Also http://www.example.org/verzeichnis/neue_php_datei_zum_session_killen.php

          Das Beispiel aus dem PHP-Manual zu session_destroy() sollte Dir weiterhelfen.

          Hi!

          Der User kann leider aber nichts anderes mehr auf dem Server unter seiner Session aufrufen! Das ist doch gerade der Punkt - Er muss die Sessions über den Browser leeren.

  2. wir haben ein PHP-Script übernommen das eine Datei in ein Verzeichnis hochlädt.

    Die PHP Datei kann ein auf dem Server Empfangenes File bearbeiten und speichern. Es kann zudem ein Formular für den Upload bereitstellen.
    Aber dazwischen hängen noch andere Komponenten.

    Ab und an kommt es vor dass der Server des Kunden keine Antwort sendet bzw. den Vorgang abbricht.
    Woran liegt es?

    Es kann der Server den Uplaod beschränkt haben, bevor PHP überhaupt etwas zu sehen bekommt. Hier ist eine mögliche Fehlerquelle.
    Es ist sinnvoll für den Apachen mittels .htaccess die Uploadgrösse zu beschränken, jedoch muss die Grenze vernünftig gesetzt sein.

    Somit denkt der Kunde, dass seine Datei immernoch hochgeladen wird.

    Sehr wahrscheinlich wurde bei einer Prüfung im Script eine "or die" Anweisung geschrieben, statt einen ungültigen Zustand entsprechen richtig weiter zu behandeln.

    Wieso dass so programmiert wurde, verstehen wird nicht ;-) Den Timeout richtig setzen oder ähnliches ist uns leider untersagt. Ebenfalls die Möglichkeit mittels anderer Programmiersprachen den Upload zu steuern.

    Könnt ihr Serveroptionen mit .htaccess Files setzen?

    Da ihr das Script übernommen habt, müsst ihr die möglichen Fehler in der Fehlerbehandlung kontrollieren. Nichts hindert euch daran, ein falsches Script zu patchen.

    mfg Beat

    --
    Selber klauen ist schöner!
  3. Hi,

    Geht er nun auf eine andere Seite des Tools in welchem der Upload angeboten wird, wird dort wegen der Session oder des Servers keine Seite mehr geladen. Da die Session sozusagen hängt.

    Wenn das Upload-Script "noch laueft", und in diesem die Session (wieder) aufgenommen, aber noch nicht geschlossen wurde - dann blockiert die dadurch "offen gehaltene", gesperrte Session-Datendatei natuerlich andere Scripte, die ebenfalls auf dieses zugreifen wollen.

    Evtl. kann man im Upload-Script - welches ja erst "angeschmissen" wird, wenn die Datei vollstaendig am Server angekommen ist, also auch erst ab dem Zeitpunkt blockieren kann - ja so umschreiben, dass es die Session erst spaeter startet/aufnimmt (bspw., wenn es mit dem lange dauernden[?] Verschieben/Verarbeiten der hochgeladenen Datei fertig ist), oder zu einem guenstigeren, frueheren Zeitpunkt session_write_close aufrufen, um die Session-Datei wieder freizugeben ...

    MfG ChrisB

    --
    "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."