php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #16 (permalink)  
Alt 07-08-2008, 11:01
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Sache mit dem Auslagern ist ziemlich komplex. Das können längst nicht alle Sprachen. Ich weiss ned ob es PHP kann, aber JAVA auf Windows z.B. schmeisst dir in der Default Einstellung einen Fehler um die Ohren wenn der RAM zu Neige geht (Heap Speicherfehler) und bricht ab. Ob PHP bei zu wenig RAM in die SWAP schreiben kann, weiss ich ned, obwohl es mich nicht wundern würde, wenn es das nicht könnte
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #17 (permalink)  
Alt 07-08-2008, 11:04
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Ach Muschle, das könnte so ein spannendes Problem sein, aber mit deiner ätzenden Art kannst du einem echt den Spass verderben.....
__________________
Wir werden alle sterben
Mit Zitat antworten
  #18 (permalink)  
Alt 07-08-2008, 11:31
muschle66
 Newbie
Links : Onlinestatus : muschle66 ist offline
Registriert seit: Feb 2007
Beiträge: 41
muschle66 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jahlives
Ob PHP bei zu wenig RAM in die SWAP schreiben kann, weiss ich ned, obwohl es mich nicht wundern würde, wenn es das nicht könnte
Das hab ich mir auch schon gedacht. Obwohl ich das kaum glauben kann wenn man mal die Vielzahl an (auch grossen) Websites sieht die den php upload verwenden. Falls das wirklich so wäre, wäre das ne ziemliche Unzulänglichkeit von PHP. Vor allem macht mich stutzig, dass dazu so wenig Infos zu finden sind. An dem Problem häng ich nun schon ne ganze Weile. Trotz intensiver google recherchen lässt sich da irgendwie nichts handfestes finden wie sich das verhält / verhalten sollte. Hab jetzt auch mal in der PHP Mailingliste angefragt. mal sehen obs da jemand gibt der da was bestätigen / dementieren kann.


Also falls das mal jemand testen wollen würde, kann gern mal auf die schnelle einen test upload script liefern. Interessant wäre einfach, ob das evtl. nur ein Suse Problem ist.
Mit Zitat antworten
  #19 (permalink)  
Alt 07-08-2008, 11:47
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von muschle66
Dann hilf doch mal einem "Newbie" als "PHP Experte" anstatt nichtssagende und provozierende Posts loszutreten. Wäre doch mal ein Ansatz, oder?
Dein Ansatz wäre erstmal, deine Behauptungen zu untermauern. Dein ursprungsproblem resultiert einfach aus dem Missbrauch des HTTP-Protokolls. Deine Behauptung steht erstmal ohne Belege in der Luft. Dannach sehen wir weiter.
Mit Zitat antworten
  #20 (permalink)  
Alt 07-08-2008, 11:52
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich vermute mal, dass PHP nicht swappen kann und das wenn schon vom Server erledigt werden müsste.
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #21 (permalink)  
Alt 07-08-2008, 11:53
muschle66
 Newbie
Links : Onlinestatus : muschle66 ist offline
Registriert seit: Feb 2007
Beiträge: 41
muschle66 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von unset
Dein Ansatz wäre erstmal, deine Behauptungen zu untermauern. Dein ursprungsproblem resultiert einfach aus dem Missbrauch des HTTP-Protokolls. Deine Behauptung steht erstmal ohne Belege in der Luft. Dannach sehen wir weiter.

Du erzählst puren quatsch, komplett am Thema und Problem vorbei, kannst du das mal lassen? Halt dich doch einfach raus hier und provozier nicht so.
Die biereinfache Sachlage ist, das php bei mir bei einem upload nicht swapped und das Zeug im Main Memory hält. Nicht mehr und nicht weniger. Was soll man da jetzt untermauern <Kopfschüttel>
Mit Zitat antworten
  #22 (permalink)  
Alt 07-08-2008, 11:54
muschle66
 Newbie
Links : Onlinestatus : muschle66 ist offline
Registriert seit: Feb 2007
Beiträge: 41
muschle66 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jahlives
Ich vermute mal, dass PHP nicht swappen kann und das wenn schon vom Server erledigt werden müsste.
Dem Ansatz bin ich schon nachgegangen. Die http Prozesse verändern sich nicht während des Uploads. Für mich ein indiz, das PHP den Speicher in diesem Moment verwaltet.
Mit Zitat antworten
  #23 (permalink)  
Alt 07-08-2008, 12:08
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Welcher Webserver? Welche PHP-Version? mod_php? Mit APC?
Mit Zitat antworten
  #24 (permalink)  
Alt 07-08-2008, 12:33
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Ich würde das Speicherproblem nicht auf PHP schieben. In erster Instanz ist das Betriebssystem für die Speicherverwaltung verantwortlich. Ich denke, PHP fordert weiteren Speicher an. Entweder legt das OS eine entsprechende Auslagerungsdatei an oder verweigert weiteren Speicher. Ob das wirklich so abläuft, kann ich allerdings nicht sagen, würde ich so einschätzen.
Mit Zitat antworten
  #25 (permalink)  
Alt 07-08-2008, 12:33
muschle66
 Newbie
Links : Onlinestatus : muschle66 ist offline
Registriert seit: Feb 2007
Beiträge: 41
muschle66 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von onemorenerd
Welcher Webserver? Welche PHP-Version? mod_php? Mit APC?
Auf Entwicklungsserver:
PHP Version 5.2.5
Apache/2.2.3 (Linux/SUSE)
Apache 2.0 Handler
Zend Memory Manager: enabled

Produktivserver:
PHP Version: 5.2.6
Apache/2.2.3 (Linux/SUSE)
Apache 2.0 Handler
Zend Memory Manager: enabled

Kein APC
Mit Zitat antworten
  #26 (permalink)  
Alt 07-08-2008, 12:37
muschle66
 Newbie
Links : Onlinestatus : muschle66 ist offline
Registriert seit: Feb 2007
Beiträge: 41
muschle66 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von PHP-Desaster
Ich würde das Speicherproblem nicht auf PHP schieben. In erster Instanz ist das Betriebssystem für die Speicherverwaltung verantwortlich. Ich denke, PHP fordert weiteren Speicher an. Entweder legt das OS eine entsprechende Auslagerungsdatei an oder verweigert weiteren Speicher. Ob das wirklich so abläuft, kann ich allerdings nicht sagen, würde ich so einschätzen.
Könnte ich mir auch vorstellen, aber ich habe keinen Ansatz wie ich das prüfen könnte. Am swap kann man ja nicht viel drehen(?), er ist da oder nicht denk ich mal. Auf den Kisten ist der swap so um die zwei GB (Standard Einstellung, nichts verändert).

Was für Möglichkeiten würde es den noch geben zu testen ob php bei Speichermangel zu swappen anfängt?
Mit Zitat antworten
  #27 (permalink)  
Alt 07-08-2008, 13:00
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Original geschrieben von muschle66
Was für Möglichkeiten würde es den noch geben zu testen ob php bei Speichermangel zu swappen anfängt?
Apache und PHP mit Debug Flag kompilieren, ein Upload Script schreiben und dann drauf los tracen. Leider fehlt mir grad die Zeit dazu.
Mit Zitat antworten
  #28 (permalink)  
Alt 07-08-2008, 13:29
muschle66
 Newbie
Links : Onlinestatus : muschle66 ist offline
Registriert seit: Feb 2007
Beiträge: 41
muschle66 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Was vielleicht schon helfen würde, bevor der debug / compile Aufwand betrieben wird wäre ein kleiner Test auf nem anderen Betriebsystem ob es sich da ähnlich verhält. Das upload File muss nur grösser sein als der Hauptspeicher. Während des uploads mit vmstat den free Speicher im Auge behalten und wenn der bei null ist müsste der swap sich erhöhen. Und genau das tut er bei mir nicht.
Mit Zitat antworten
  #29 (permalink)  
Alt 07-08-2008, 15:13
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Damit beobachtest du zwar das (systemspezifische) Verhalten, kommst der Ursache jedoch nicht auf die Spur und kannst das Verhalten folglich nicht ändern. Wenn du nur wissen willst, ob geswappt wird, dann teste. Wenn du wissen willst, warum bzw. warum eben nicht, bringt dir so ein Test überhaupt nichts.

Nichtsdestotrotz kann so ein Test Hinweise auf mögliche Ursachen liefern, die man dann gezielt untersuchen könnte. Meine Vermutung ist, dass der Apache solche Upload-Requests nicht komplett selbst abhandelt. Er wird wahrscheinlich nur die Header zu einem Struct verwursten, das er den Hook-Callbacks übergibt. Um den Request Body wird sich ein Modul kümmern müssen, z.B. CGI oder PHP. Und eine kurze Recherche ergab, dass PHP bisher alle Uploads erstmal in den RAM quetscht und bei Vollständigkeit ins upload_temp_dir rausschreibt. Das mag aus IO-Sicht schnell sein, aber wenn der Speicher nicht ausreicht, kann so der Request nicht vollständig empfangen werden. So siehts bei dir auch aus.

Ich konnte übrigens keinen Hinweis darauf finden, wie PHP es macht, wenn gleichzeitig mehrere Dateien (in einem Request) hochgeladen werden. Bestenfalls wird jede sofort bei Vollständigkeit rausgeschrieben. Kann aber auch sein, dass erst mal alle Files im Speicher liegen und wenn das letzte komplett ist, werden alle auf Platte verewigt. Sollte einzeln rausgeschrieben werden, könnte man sich evtl. mit einer clientseitigen Aufteilung der Datei helfen ... mit einem Applett. Anders wird man dem Problem nicht beikommen, denn man kann wohl weder Apache noch PHP umprogrammieren. Die einfachste Lösung, mehr RAM kommt ja wohl nicht in Frage, sonst hättest du schon ein paar Riegel nachgekauft.

Geändert von onemorenerd (07-08-2008 um 15:24 Uhr)
Mit Zitat antworten
  #30 (permalink)  
Alt 07-08-2008, 17:44
muschle66
 Newbie
Links : Onlinestatus : muschle66 ist offline
Registriert seit: Feb 2007
Beiträge: 41
muschle66 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für das ausführliche Statement!

Ich habe die selbe Vermutung, nur mein Gedanke war, wenn PHP sich so verhält das es alle aktiven Uploads im Speicher hält, ist das ein granatenmässiger Designfehler. Auf der anderen Seite kann ich das nicht glauben, dass ich der einzige bin dem das auffällt und sich darüber Gedanken macht.

Das mit dem Speicher kaufen ist nicht die Lösung. Soviel Speicher kann man gar nicht reinstopfen, dass man da auf irgend einer kalkulierbaren sicheren Seite wäre. Und ich bezweifle, das das ein Load Balancer oder Cluster das ändert. Wobei das wohl mit Kannonen auf Spatzen geschossen wäre.
100erte Uploads belasten die Kiste nicht so tragisch, stellen die Kiste aber hin wenn das alles im Speicher gesammelt wird. Deshalb mein Ansatz "Designfehler". Wäre leicht zu beheben, wenn PHP die Uploads chunkweise (so wie es das ja auch macht) in das File schreiben würde und nicht gleichzeitig aus irgend einem Grunde auch noch im Hauptspeicher halten. Ich werde mich mal näher zu den Spezialisten wagen, in der general PHP Liste komme ich bis dato auch nicht richtig weiter.

Ich lass es euch wissen wenn ich einen Ansatz einer Antwort auf das Problem erhalte.

Geändert von muschle66 (07-08-2008 um 17:47 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:51 Uhr.