PHP File Upload im Hauptspeicher

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

  • PHP File Upload im Hauptspeicher

    Hallo zusammen,

    hätte da mal eine echte Expertenfrage:

    Während eines http Upload hält PHP die aktuell hochgeladenen Daten im Hauptspeicher. Wenn der voll ist, knallts (sprich upload Datei wird vom tmp entfernt, da PHP intern abbricht). Wie ist dieses "mangel an Hauptspeicher Problem" zu lösen? Wieso wird das nicht in swap ausgelagert?

    Gruß Tom

  • #2
    hi,

    php sendet dem system einfach die datei und sagt .. speicher mal im tmp (dateisystem) und das system speichert die im temp.

    wie das gemacht wird ist php schei*egal .. es wird gemacht und gut ist.

    sollte wärend des uploades der arbeitsspeicher voll sein wird der swap/ die auslagerungsdatei verwendet.
    Gruß
    Uzu

    private Homepage

    Kommentar


    • #3
      Original geschrieben von UzumakiNaruto
      php sendet dem system einfach die datei und sagt .. speicher mal im tmp (dateisystem) und das system speichert die im temp.
      Käse! PHP sendet überhaupt nichts. Die Datei ist Teil des Requests, der vom Browser an den Server geschickt wird.
      Es hängt vom Webserver ab, wie er den Request speichert. Afaik wertet Apache jeden vollständig empfangenen HTTP-Header sofort aus. Enthält der Body eine oder mehrere Dateien, werden sie häppchenweise (scheinbar in 1MB chunks) in /tmp abgelegt. Wenn man eine sehr große Datei über eine schmale Verbindung hochlädt, kann man zusehen, wie das File in /tmp wächst.

      Check mal LimitRequestBody (Apache) sowie upload_max_filesize, memory_limit, max_input_time und post_max_size (PHP).

      Kommentar


      • #4
        Super Board hier!
        Endlich mal Antworten mit denen man was anfangen kann

        Dann noch etwas mehr von meinem Problem:

        Ich verwende die Suse 10.2
        Mit irgend welchen PHP Limits hab ich kein Problem. Ich hab das mal genau verfolgt, kann damit aber nicht das Problem lokalisieren:

        Während ich einen 1 GB http Upload laufen lasse kann ich sehen wie die Datei im tmp größer wird. Gleichzeitig während des uploads (der läuft ja dank 1 GB ne weile) mit vmstat den Speicher im Auge gehalten sehe ich das free langsam aber beständig nach 0 geht. Bei Null bricht der upload ab und die unfertige tmp Datei wird gelöscht.
        Bei 1 GB Hauptspeicher und dem upload einer 1 GB Datei ist der Crashpunkt bei ca. 900 MB.

        Wenn ich mit ps axu während des uploads den Speicher der Apache Prozesse anschaue, ist der immer gleichbleiben. Also muss es doch theoretisch am Speichermanagement von PHP liegen(?).


        Ich kann und will mir nicht vorstellen, das dies bei mir ein normaler Zustand ist.
        Man stelle sich vor, man hat eine Website mit etwas mehr user die gleichzeitige große Datein uploaden und php behalt diese alle schön im Hauptspeicher! Nicht mal geswappt wird.

        Kommentar


        • #5
          Original geschrieben von onemorenerd
          Check mal LimitRequestBody (Apache)
          Das ist es nicht, das ist Standardmäsog auf unlimited eingestellt:
          http://httpd.apache.org/docs/2.0/mod...mitrequestbody

          Und wenn das aktiviert wäre, würde er den upload gar nicht erst annehmen und starten.

          Kommentar


          • #6
            Wenn ich mit ps axu während des uploads den Speicher der Apache Prozesse anschaue, ist der immer gleichbleiben. Also muss es doch theoretisch am Speichermanagement von PHP liegen(?).
            PHP startet erst nach Ende des Uploads an, d.h. der Upload ist bereits beendet. Wenn keine entsprechenden Limits in den Einstellungen vorhanden sind (siehe onemorenerd's Beitrag), scheint es beim Upload bereits schief gehen!

            Kommentar


            • #7
              PHP startet erst nach Ende des Uploads an
              Das ist nicht ganz richtig.
              Das Script wir erst nach dem Upload gestartet. Richtig!
              Aber das File selber, wird schon von PHP angenommen.
              Sonst würde ja der "APC Upload Hook" nicht greifen können.
              Wir werden alle sterben

              Kommentar


              • #8
                Aber das File selber, wird schon von PHP angenommen.
                Hmm, guter Einwand. Haben die Einstellungen upload_max_filesize, etc. auch zu diesem Zeitpunkt schon Einfluss? Dann muss der TO natürlich diese Werte entsprechend hoch genug setzen!

                Kommentar


                • #9
                  Haben die Einstellungen upload_max_filesize, etc. auch zu diesem Zeitpunkt schon Einfluss?
                  Ja! (meines Wissens nach)
                  Zumindest wird die php.ini vorher schon gelesen, wegen dem uploadpath usw.

                  Der TE braucht für fettere Uploads mehr Hauptspeicher. Und wenn meherere fette Uploads gleichzeitig laufen sollen, dann einen Webserver Cluster hinter einem Loadbalancer.
                  Aber das habe ich ihm in einem anderen Forum schon gesagt.

                  Warum sein System nicht swapt?
                  KA, bisher ist ja sogar noch geheim, ob es sich um Linux, AIX, Solaris, BSD oder Win handelt.
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    Wer 1GB per HTTP überträgt, hat sich wohl nicht schlau gemacht, was das Protokoll eigentlich macht - und das hier sinnigerweise FTP zum einsatz kommen sollte.
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar


                    • #11
                      Original geschrieben von combie
                      Warum sein System nicht swapt?
                      KA, bisher ist ja sogar noch geheim, ob es sich um Linux, AIX, Solaris, BSD oder Win handelt.
                      Suse 10.2.

                      Ich kann es mir irgendwie nicht vorstellen, dass ein php Upload mit dem K.O. Kriterium Hauptspeicher daherkommt. Wozu gibts swap? Ist doch der, wenn auch mit Nachteilen behaftet, erweiterte Hauptspeicher.
                      Mir ist schon die Sachlage klar, das man keine so grossen http Uploads machen sollte etc. Aber rein tecnisch gesehen kann ich mir echt nicht vorstellen, das die Limitierung der pysikalische Ram sein soll. Wenn dies tatsächlich so wäre, wäre PHP in dem Punkt gelinde gesagt ziemlich unzuverlässig.


                      Du weist, warum ich meine Frage hier gepostet habe. Das muss nicht weiter ausgeführt werden. Und dein arrogantes, überhebliches Verhalten, dass du woanderst an den Tag legst kannst du einfach hier stecken lassen bitte.

                      Kommentar


                      • #12
                        Naja, wenn jemand fragt, wie er mit seinem FLAK die Mücken in seinem Zimmer beseitigen kann, wird er auch zu hören bekommen, dass sich eine Fliegenklatsche dazu besser eignet ...
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          Original geschrieben von unset
                          Wer 1GB per HTTP überträgt, hat sich wohl nicht schlau gemacht, was das Protokoll eigentlich macht - und das hier sinnigerweise FTP zum einsatz kommen sollte.
                          Wenn das so ein Problem ist, reduzieren wir doch einfach meine Frage warum der Upload im Speicher gehalten wird oder aber wie sich ein System verhält wo 50 Leute gleichzeitig eine 20 MB Datei uploaden. Natürlich kann man jetzt sagen da muss ein Loadbalancer und noch 25 weitere Server her. Warum? Nur weil es nicht möglich(?) ist das PHP(oder das BS?) den Speicherbedarf in diesem Moment swapped bzw. so behandelt das dies nicht auf den Speicher geht und damit einen Scriptlauf abbricht. Kann ich mir eigentlich nicht wirklich vorstellen.

                          Kommentar


                          • #14
                            Im Grunde weißt du doch nichtmal, ob deine Behauptung so zutrifft.
                            [FONT="Helvetica"]twitter.com/unset[/FONT]

                            Shitstorm Podcast – Wöchentliches Auskotzen

                            Kommentar


                            • #15
                              Original geschrieben von unset
                              Im Grunde weißt du doch nichtmal, ob deine Behauptung so zutrifft.
                              Dann hilf doch mal einem "Newbie" als "PHP Experte" anstatt nichtssagende und provozierende Posts loszutreten. Wäre doch mal ein Ansatz, oder?

                              Kommentar

                              Lädt...
                              X