Ergebnis 1 bis 13 von 13

Thema: [PHP] move_uploaded_file() oder ftp_fput()

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    [PHP] move_uploaded_file() oder ftp_fput()

    Hi!
    Ich muss eine Entscheidung treffen, und zwar sollte diese schnell getroffen sein:

    Wenn ich Dateien über PHP per FTP (!) hochladen, werden doch auch die Verbindungen gezählt, wie wenn ich mich 20x mit meinem Server im Netz verbinde.

    Beispiel: 20 Dateien so auf einmal herunterlade.
    Die meisten Server sagen "Vergiss es" und lassen mich maximal 4 Tasks gleichzeitg verwenden (1x Blättern, 3x Downloaden).

    Wenn ich nun mich per PHP auf einen FTP Server Verbinde, werden die Verbindungen ja auch gezählt.
    Und dann müsste doch der FTP Server bei 4 erreichten Verbindungen sagen: "Du kannst mich mal" und ich würde blöd aus der PHP- Wäsche schauen, oder?

    Sollte dies zutreffen, werde ich mich für move_uploaded_file() entscheiden.
    Dann habe ich eine Frage zu move_uploaded_file(): Wenn PHP auf SAFE gestellt ist, kann ich keine Dateien hochladen, müsste stimmen oder?

    Dennis

    Wichtiger Edit: Per FTP kann dich Datei um einiges größer sein oder?
    Da diese max_uploaded_dateigrößen_dings ja meist nicht auf nur 2mb (wie bei move_uploaede_bla() ist, oder?)

    Geändert von Maisaffe (26.09.2005 um 20:48 Uhr)

  2. #2
    Wenn der Server Verbindungen zählt dann zählt er Verbindungen und es ist ihm wahrscheinlich egal, was für Verbindungen du benutzt.

    Per ftp_fput() oder ftp_put() kannst du normalerweise nur Dateien hochladen, sich auf dem Server befinden, auf dem PHP läuft. Um Dateien zum Server zu befördern ist es also relativ ungeeignet (falls du mit Dateideskriptoren über HTTP-URLs arbeiten willst gibt es einfachere Methoden, aber das funktioniert mit Safemode alles nicht).

    Übrigens kannst du mit move_uploaded_file() überhaupt nicht hochladen. Hochladen tust du per HTTP POST; move_uploaded_file() verschiebt die Datei hinterher auf dem Server.
    Die meisten Hoster haben für Dateiuploads per POST eine Beschränkung auf 2 Megabyte.

  3. #3
    Zitat Zitat von Jesus_666
    Wenn der Server Verbindungen zählt dann zählt er Verbindungen und es ist ihm wahrscheinlich egal, was für Verbindungen du benutzt.

    Per ftp_fput() oder ftp_put() kannst du normalerweise nur Dateien hochladen, sich auf dem Server befinden, auf dem PHP läuft. Um Dateien zum Server zu befördern ist es also relativ ungeeignet (falls du mit Dateideskriptoren über HTTP-URLs arbeiten willst gibt es einfachere Methoden, aber das funktioniert mit Safemode alles nicht).

    Übrigens kannst du mit move_uploaded_file() überhaupt nicht hochladen. Hochladen tust du per HTTP POST; move_uploaded_file() verschiebt die Datei hinterher auf dem Server.
    Die meisten Hoster haben für Dateiuploads per POST eine Beschränkung auf 2 Megabyte.
    Joa, das mit move_ ist mir klar.
    Aber wenn man Dateien hochlädt (Temporär/ Server), kann man die Datei ja eigetnlich von dort auch per FTP weiterreichen. Aber wenn beides Safe Mode nicht unterstützt, kann ich auch einfach per PHP das ganze machen.
    Und wenn die Verbindungen per FTP gezählt werden, kann man das ganze ja per FTP eh knicken.

    @2MB: Ich weiß. Leider.
    Wenn man aber nen eigenen Server hat, kann man das ja ändern oder?
    Z.b. auf Eurem Schmutzserver (:P) könnt Ihr das ja umstellen oder nicht?
    (Ist eh unlogisch mehr als 1mb, oder max. 2mb per web hochzuladen. )

    Dennis

  4. #4
    Zuerstmal hab ich keinen Plan was du vor hast.
    Dann ein paar Fakten:
    Ja, wenn du Administrator eines Servers bbist, kannst du alles mit ihm machen.
    Nur wenn du Administrator des Systems bist, gibt es bessere Wege Dateien per FTP zu saugen oder auf einen weiteren Server hochzuladen: "wget||wput" mit "-b"-Argument

    <?php system("wget -b ftp://blargh.de/datei"); ?>

    Dadurch lässt du das Programm wget saugen, welches die Sache professioneller angeht als PHP es tun könnte.
    Das Selbe mit wput, nur die Syntax ist a bisserl anders. Lies dazu die Manpage.

    -b deswegen damit du nicht auf die Script-Execution-Time Rücksicht nehmen musst. wget wird dann in den Hintergrund geschubst und läuft als Prozess im Hintergrund ohne das sich PHP noch länger damit beschäftigen müsste.

    Wegen dem Problem mit den mehreren Dateien die zugleich gesaugt würden:
    Pack die system()-Funktion in eine While-Schleife, die Dateien die hochgeladen oder runtergeladen werden sollten pack in einen Array und fütter die While-Schleife mit diesem Array. Bei jedem Schleifendurchlauf, wird dann eine Datei im Array angegangen.
    Außerdem nimm das "-b"-Argument wieder raus. Dadurch schreitet die while-Schliefe erst voran, wenn die jeweilige Datei im Array fertig hoch/runtergeladen ist.

    Dazu musst du dann aber die Script-Execution-Time in der php.ini hochschrauben.
    Bedenke dass das deinen Server in Fehlerfällen stark belasten könnte.

    wput||wget gibts auch für Windowssysteme.

  5. #5
    Zitat Zitat von Chocwise
    Zuerstmal hab ich keinen Plan was du vor hast.
    Dann ein paar Fakten:
    Ja, wenn du Administrator eines Servers bbist, kannst du alles mit ihm machen.
    Nur wenn du Administrator des Systems bist, gibt es bessere Wege Dateien per FTP zu saugen oder auf einen weiteren Server hochzuladen: "wget||wput" mit "-b"-Argument

    <?php system("wget -b ftp://blargh.de/datei"); ?>

    Dadurch lässt du das Programm wget saugen, welches die Sache professioneller angeht als PHP es tun könnte.
    Das Selbe mit wput, nur die Syntax ist a bisserl anders. Lies dazu die Manpage.

    -b deswegen damit du nicht auf die Script-Execution-Time Rücksicht nehmen musst. wget wird dann in den Hintergrund geschubst und läuft als Prozess im Hintergrund ohne das sich PHP noch länger damit beschäftigen müsste.

    Wegen dem Problem mit den mehreren Dateien die zugleich gesaugt würden:
    Pack die system()-Funktion in eine While-Schleife, die Dateien die hochgeladen oder runtergeladen werden sollten pack in einen Array und fütter die While-Schleife mit diesem Array. Bei jedem Schleifendurchlauf, wird dann eine Datei im Array angegangen.
    Außerdem nimm das "-b"-Argument wieder raus. Dadurch schreitet die while-Schliefe erst voran, wenn die jeweilige Datei im Array fertig hoch/runtergeladen ist.

    Dazu musst du dann aber die Script-Execution-Time in der php.ini hochschrauben.
    Bedenke dass das deinen Server in Fehlerfällen stark belasten könnte.

    wput||wget gibts auch für Windowssysteme.
    Du meinst ich will mir nen Server holen der mir von nem anderen Server was runterlädt? Ne, falsch.
    Ich wollte nur wisen ob die Verbindungen gezählt werden per FTP.
    Es ging nur um was simples: Datei Upload.
    Wollte nur mal schauen ob das per FTP vielleicht doch nicht konfortabler wäre, wegen der Upload größe.

    Aber wenn ich eh schon poste:
    PHP unterstützt GZip.
    Kann man damit was Anfangen? Oder bremst das nur unnötige einen Server aus?
    (Upload > Entpacken und Packen > Download meine ich)

    Dennis

  6. #6
    Ja, die Downloads werden gezählt. Du darfst nur exakt eine Verbindung auf Port 80 haben, kannst unter keinen Umständen etwas hochladen und mußt ein Paßwort benutzen.

    Das gilt für irgendeinen Server irgendwo im Internet. Ob es für dich gilt kann dir niemand sagen, weil niemand weiß, von wo nach wo du die Dateien bewegen willst. Willst du von deinem PC zu einem Server im Internet laden? Oder umgekehrt? Hast du Administratorrechte auf dem Server oder wirst du nur gehostet? Wo sitzt überhauot das Skript?
    Das sind alles Umstände, die beeinflussen, was geht und was nicht und wie es funktioniert. Und es sind alles Informationen, die du uns nicht gegeben hast.

  7. #7
    Zitat Zitat von Jesus_666
    Ja, die Downloads werden gezählt. Du darfst nur exakt eine Verbindung auf Port 80 haben, kannst unter keinen Umständen etwas hochladen und mußt ein Paßwort benutzen.

    Das gilt für irgendeinen Server irgendwo im Internet. Ob es für dich gilt kann dir niemand sagen, weil niemand weiß, von wo nach wo du die Dateien bewegen willst. Willst du von deinem PC zu einem Server im Internet laden? Oder umgekehrt? Hast du Administratorrechte auf dem Server oder wirst du nur gehostet? Wo sitzt überhauot das Skript?
    Das sind alles Umstände, die beeinflussen, was geht und was nicht und wie es funktioniert. Und es sind alles Informationen, die du uns nicht gegeben hast.
    Es ging nur ums Prinzip.
    Das Script liegt auf nem Server irgendwo in den unendlichen Weiten des Internets.
    Aber ist jetzt egal.
    Das mit Passwort weiß ich:
    PHP-Code:
    <?php //
    /* CONNECT FTP */
    $host 'ip_oder_url';
    $user 'benutzer';
    $password 'passwort';

    $ftp_connect = @ftp_connect($host);
    $ftp_login = @ftp_login($ftp_connect$user$password) or die('Error: Server kann nicht verbunden werden! >:|');

    if(
    $ftp_connect)
    {
    echo 
    "Verbindungsstatus: Steht, aber sowas von!!";
    }
    ?>
    Labbert mich lieber über GZip zu, ob das gut funktioniert auf nem Webserver.

    Dennis

  8. #8
    Zitat Zitat von dennis_meckel
    ...Labbert mich lieber über GZip zu, ob das gut funktioniert auf nem Webserver.

    Dennis
    Es macht nur bei ASCII-Dateien Sinn. Oder eben unkomprimierte Medien wie WAV, MIDI, AVI (ohne DivX oder XviD oder...), BMP.
    Der meiste andere Kram, der in irgendeiner Weise komprimiert ist, lässt sich nur zu 1-5% komprimieren, was den Aufwand nicht lohnt.
    Bei Sachen wie diesem Forum z.B. ist das sehr nützlich, weil hier ein nicht unerheblicher Anteil an Text transferiert wird, was sich natürlich mit 50% und mehr in den Trafficstats bemerkbar macht.
    Wenn man diesen Anteil auf 10% zusammenpressen kann, ist das ein finanzieller Vorteil bei Forensystemen der hisigen Größenordnung.
    Allerdings schlägt das natürlich auf die Performance. Ich würde schätzen, das gzip bei 200 Usern die sich im Forum aufhalten, etwa 20-30% des Loads ausmacht den diese User insgesamt produzieren.

    Geändert von Chocwise (27.09.2005 um 19:20 Uhr)

  9. #9
    Zitat Zitat von Chocwise
    Es macht nur bei ASCII-Dateien Sinn. Oder eben unkomprimierte Medien wie WAV, MIDI, AVI (ohne DivX oder XviD oder...), BMP.
    Der meiste andere Kram, der in irgendeiner Weise komprimiert ist, lässt sich nur zu 1-5% komprimieren, was den Aufwand nicht lohnt.
    Bei Sachen wie diesem Forum z.B. ist das sehr nützlich, weil hier ein nicht unerheblicher Anteil an Text transferiert wird, was sich natürlich mit 50% und mehr in den Trafficstats bemerkbar macht.
    Wenn man diesen Anteil auf 10% zusammenpressen kann, ist das ein finanzieller Vorteil bei Forensystemen der hisigen Größenordnung.
    Allerdings schlägt das natürlich auf die Performance. Ich würde schätzen, das gzip bei 200 Usern die sich im Forum aufhalten, etwa 20-30% des Loads ausmacht den diese User insgesamt produzieren.
    Angenommen das Forum hat 30% Komprimierung, das bringt aber eigentlich doch garnichts, da die Daten ja wieder entpackt gesendet werden oder?
    Also das volle Volumen wird an den Browser gesendet oder unterstützen Brwoser auch GZip?

    Dennis

    Edit: Auser BackUp download, da bringt es was. Sollte klar sein.

  10. #10
    Zitat Zitat von dennis_meckel
    ...Edit: Auser BackUp download, da bringt es was. Sollte klar sein.
    Nein, sollte es nicht.
    Du musst lernen korrekte Nomentklatur zu verwenden.
    Dich versteht niemand, wenn du dir Bezeichnungen selbst ausdenkst und dann davon ausgehst, dass man dich schon versteht.
    Bedachtere Artikulation wäre auch sehr hilfreich beim Verständnis deiner Fragestellungen.

    WTF ist ein "BackUp download"?
    Wenn ich ein Backup eines meiner Projekte sauge, ist es zumeist gezippt um unnötige Kommunikation zwischen Client und Server zu minimieren und die Sache so zu beschleunigen. Ist etwas gezippt, bringt Gzip nichts mehr.
    Du siehst, was ich persönlich unter deinem Gebrabbel verstehe und du siehst auch, dass ich es sicherlich falsch verstanden habe, eben weil deine Artikulation und Nomenklatur alles andere als konventionell ist.
    Sollte es genau das sein, was du meintest. Ist es reiner Zufall gewesen.

  11. #11
    Zitat Zitat von Chocwise
    Nein, sollte es nicht.
    Du musst lernen korrekte Nomentklatur zu verwenden.
    Dich versteht niemand, wenn du dir Bezeichnungen selbst ausdenkst und dann davon ausgehst, dass man dich schon versteht.
    Bedachtere Artikulation wäre auch sehr hilfreich beim Verständnis deiner Fragestellungen.

    WTF ist ein "BackUp download"?
    Wenn ich ein Backup eines meiner Projekte sauge, ist es zumeist gezippt um unnötige Kommunikation zwischen Client und Server zu minimieren und die Sache so zu beschleunigen. Ist etwas gezippt, bringt Gzip nichts mehr.
    Du siehst, was ich persönlich unter deinem Gebrabbel verstehe und du siehst auch, dass ich es sicherlich falsch verstanden habe, eben weil deine Artikulation und Nomenklatur alles andere als konventionell ist.
    Sollte es genau das sein, was du meintest. Ist es reiner Zufall gewesen.
    Backup Download = Backup + Download
    Also einfach da selbe wie wenn ich meine Homepage (bzw. Gästebucheinträge) per FTP runterlade und in einen Ordner für Homepage- Kopien (in dem Fall Backups) speichere.

    Also ist dein Text die Antwort auf die Frage:
    Zitat Zitat
    Wenn ich ein Backup eines meiner Projekte sauge, ist es zumeist gezippt um unnötige Kommunikation zwischen Client und Server zu minimieren und die Sache so zu beschleunigen.
    Dennis

  12. #12
    Der Kram ist aber nicht geGzipt. Das würde die Kommunikation Client<->Server nicht erleichtern. Es muss ja für jede klitzekleine Datei ein Request gesendet werden. Das fällt halt weg, wenn alles in einem Paket steckt.

  13. #13
    Afaik unterstützen die Browser das (weiß aber nicht, welche), und der Server sendet die Seite komprimiert. Sonst würd's ja nicht wirklich was bringen. Außerdem kann ich mir anders die Zeile Accept-Encoding: gzip,deflate in dem Header, den ich an's Forum (und an alle anderen Seiten) sende, nicht erklären.

    Geändert von Lukas (27.09.2005 um 20:51 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •