DiamondDog: ftp_put Status

Hallo Leute,
ich hab ne kleine und kurz Frage und zwar kann mir jemand sagen, wie ich mir den Übertragungsstatus von ftp_put anzeigen lassen kann?
Also wie viel Mb der Datei bereits übertragen wurde?

Danke schon mal für eure Hilfe.

Mfg Dog

  1. Hi!

    [...] wie ich mir den Übertragungsstatus von ftp_put anzeigen lassen kann?

    Gar nicht. Aber es gibt eine non-blocking Version davon: ftp_nb_put(), die immer mal wieder zurückkommt.

    Also wie viel Mb der Datei bereits übertragen wurde?

    Ich fand allerdings nicht im Handbuch, wie man das ermitteln kann oder ob es eine Blockgröße gibt und wie die eingestellt ist oder werden kann.

    Lo!

    1. Hi!

      [...] wie ich mir den Übertragungsstatus von ftp_put anzeigen lassen kann?

      Gar nicht. Aber es gibt eine non-blocking Version davon: ftp_nb_put(), die immer mal wieder zurückkommt.

      Also wie viel Mb der Datei bereits übertragen wurde?

      Ich fand allerdings nicht im Handbuch, wie man das ermitteln kann oder ob es eine Blockgröße gibt und wie die eingestellt ist oder werden kann.

      Lo!

      Könnte man dann vll das Script anhalten und die Dateigröße Prüfen? Wäre das möglich und nach dem Prüfen dann weiter laufen lassen?

      1. Hi!

        Bitte zitiere nur das worauf du dich beziehst und nicht einfach alles.

        Könnte man dann vll das Script anhalten und die Dateigröße Prüfen? Wäre das möglich und nach dem Prüfen dann weiter laufen lassen?

        Hast du überhaupt verstanden, dass ftp_nb_put() schon von selbst "Pausen" macht? In einer solchen müsstest du den Empfänger befragen, wieviel er schon empfangen hat, denn soweit ich das sehe, sagt dir PHP nicht, wieviel es schon gesendet hat, sondern nur, ob noch was zu senden ist oder nicht. In PHPs Quellen gibt es aber eine Konstante FTP_BUFSIZE mit einem Wert von 4096. Die Funktion ftp_nb_continue() kehrt immer dann mit FTP_MOREDATA zurück, wenn FTP_BUFSIZE - size < 2 ist, wobei size die Anzahl der geschriebenen Byte ist (inklusive der eingefügten \r für jedes \n bei ASCII-Übertragung).

        Lo!

        1. Hi,
          also mit ftp_nb_put() und ftp_nb_continue() usw.. hab ich jetzt alles verstanden, wo es jetzt hapert ist am berechnen des momentanen upload speeds ich wei nicht ganz wie dieser errechnet wird.
          So hab ich es wie in einem andern Theard schon erwähnt erfolglos versucht:

            
          echo round($total_bytes / 1024 / (microtime() - $stat_time_micro), 2);  
          oder  
            
          echo round($total_bytes / 1024 / (ime() - $start_time), 2);  
          
          

          Kann mir jemand sagen wie genau man den Speed berechnt mit welchen Werten?

          1. Hi!

            So hab ich es wie in einem andern Theard schon erwähnt erfolglos versucht:
            echo round($total_bytes / 1024 / (microtime() - $stat_time_micro), 2);
            echo round($total_bytes / 1024 / (ime() - $start_time), 2);

            Zum einen hat microtime() eine Besonderheit, die du im PHP-Handbuch herausfinden kannst. Zum anderen muss man zum Nachvollziehen natürlich auch noch wissen, was deine Variablen enthalten: var_dump()

            Lo!

            1. Zum einen hat microtime() eine Besonderheit, die du im PHP-Handbuch herausfinden kannst.

              Hab ich schon nach gelsen aber es sollte dochauch mit time() gehen oder?

              »»Zum anderen muss man zum Nachvollziehen natürlich auch noch wissen, was deine Variablen enthalten: var_dump()

              Also in $total_bytes steht wie groß die Datei ist die übertragen wird.
              in $start_time steht wann der upload gestartet wurde.

              Nur ich bin immer noch nciht weiter wie es rechnerisch richtig wäre.
              Bzw wie ich es berechnen lassen muss.

              1. Hi!

                Zum einen hat microtime() eine Besonderheit, die du im PHP-Handbuch herausfinden kannst.
                Hab ich schon nach gelsen aber es sollte dochauch mit time() gehen oder?

                Wenn dir Sekunden statt Millisekunden ausreichen, geht natürlich auch time(). Allerdings nur, wenn mindestens eine Sekunde vergangen ist, sonst gibt es einen "Division durch 0"-Fehler.

                Ansonsten musst du microtime() mit true aufrufen, damit du eine Millisekundenanzahl und keinen String mit zwei Zahlen und einem Leerzeichen bekommst.

                »»Zum anderen muss man zum Nachvollziehen natürlich auch noch wissen, was deine Variablen enthalten: var_dump()

                Also in $total_bytes steht wie groß die Datei ist die übertragen wird.
                in $start_time steht wann der upload gestartet wurde.
                Nur ich bin immer noch nciht weiter wie es rechnerisch richtig wäre.
                Bzw wie ich es berechnen lassen muss.

                Was da drin stehen soll, kann ich dem Namen des Bezeichners entnehmen. Aber ohne die var_dump()-Ausgabe weiß ich immer noch nicht, was tatsächlich drin steht und kann somit keine Aussagen treffen über das was tatsächlich passiert. Denn die Formel an sich sieht in Ordnung aus (zumindest bei der time()-Variante, wenn ich mir das fehlende t hinzu und das Durch-0-Problem weg denke).

                Lo!