| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

06-08-2008, 14:49
|
|
muschle66
Newbie
|
|
Registriert seit: Feb 2007
Beiträge: 41
|
|
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
|

06-08-2008, 15:12
|
|
UzumakiNaruto
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Ort: Hannover
Beiträge: 584
|
|
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
|

06-08-2008, 17:13
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Zitat:
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).
|

06-08-2008, 20:45
|
|
muschle66
Newbie
|
|
Registriert seit: Feb 2007
Beiträge: 41
|
|
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.
|

06-08-2008, 20:54
|
|
muschle66
Newbie
|
|
Registriert seit: Feb 2007
Beiträge: 41
|
|
Zitat:
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.
|

06-08-2008, 21:40
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Zitat:
|
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!
|

06-08-2008, 21:48
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
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.
|

07-08-2008, 00:38
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Zitat:
|
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!
|

07-08-2008, 09:35
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
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.
|

07-08-2008, 09:47
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
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.
|

07-08-2008, 09:49
|
|
muschle66
Newbie
|
|
Registriert seit: Feb 2007
Beiträge: 41
|
|
Zitat:
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.
|

07-08-2008, 09:53
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
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 ...
|

07-08-2008, 09:57
|
|
muschle66
Newbie
|
|
Registriert seit: Feb 2007
Beiträge: 41
|
|
Zitat:
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.
|

07-08-2008, 10:46
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Im Grunde weißt du doch nichtmal, ob deine Behauptung so zutrifft.
|

07-08-2008, 10:59
|
|
muschle66
Newbie
|
|
Registriert seit: Feb 2007
Beiträge: 41
|
|
Zitat:
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?
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|