Ankündigung

Einklappen
Keine Ankündigung bisher.

Gibt es Möglichkeiten meinen Server nicht mit Speicher zu belastet?

Einklappen

Neue Werbung 2019

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

  • Gibt es Möglichkeiten meinen Server nicht mit Speicher zu belastet?

    Moin zusammen,

    ich suche aktuell nach einer Möglichkeit meinen Server (der nicht gerade viel Speicher hat) mit Dateien (.mp4) zu belasten.
    Ich habe auf meiner FritzBox Videos, die ich meinen Eltern bspw. über eine Passwortgeschützte Webseite und einer IP-Whitelist zugänglich machen möchte.

    Nun klicken Sie auf eines der Video's und kommen auf "watch.php?video=XYZ" das löst aktuell ein Prozess aus, dass die Datei Speichert und lokal mit "embed" einbindet.
    Nach dem anschauen wird das Video automatisch entfernt aus dem Speicher.

    Jetzt ist es nur so, wenn man ein großes Video auswählt was größer als der Speicher vom Server ist, wird es Fehlerhaft angezeigt.
    Und daher suche ich nach einer Möglichkeit die Videos auf dem Server am besten ohne Speicher zu verschwenden kurzzeitig (temporär) zu speichern.

    Über Lösungsansätze wäre ich dankbar.

  • #2
    Wie gibst du denn das Video aus? file_get_contents liest ja das Video komplett in den Speicher ein und gibt es dann aus. Es gibt zum Beispiel https://php.net/passthru damit wird die Datei einfach nur weitergereicht. Alternativ kannst du mit fopen und chuncked mit header dann nur bestimmte anzahl an bytes anfragen.

    Also man müsste sich genau den Code angucken von deiner watch.php
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

    Kommentar


    • #3
      https://www.php.net/manual/de/function.readfile.php

      Kommentar


      • #4
        ja genau das meinte ich, nicht passthru.. wenn die Finger nicht das tun was der Kopf vorhatte
        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

        Kommentar


        • #5
          Danke für eure Ideen. Jetzt ist es so, dass er mit
          PHP-Code:
          readfile($video); 
          nichts macht und wenn ich mir anschaue wieso, wird mir das hier angezeigt
          bool(false)
          Also stimmt da ja irgendwas nicht.
          Mit dem
          PHP-Code:
          header('Content-Type: audio/mp4'); 
          davor das selbe.

          Wahrscheinlich versucht er ja auch die Datei lokal zu lesen?!
          Da liegt sie aber nicht sondern auf meiner FritzBox.

          Da ich ne FTP Verbindung aufgebaut hab, ist das
          PHP-Code:
          ftp_get(); 
          auch keine gute Lösung, da es ja dann wieder auf meinem Server hinterlegt wird das Video und da kommt ja das Speicher problem wieder zu stande.

          Und
          PHP-Code:
          file_get_contents(); 
          hilft nicht, da die FritzBox nur die FTP Verbindung zu lässt und wenn ich da drin bin gibt es für jedes Video ein Ordner mit einer ID und in diesem Ordner das Video.
          Finden konnte ich das Video ja mit
          PHP-Code:
          $watch $_GET["video"];
          if(
          ftp_chdir($connection_id$watch)){
               
          $video ftp_nlist($connection_id".");
               echo 
          basename($video[0]); //Ausgabe ist dann der Name des Videos mit natürlich der Endung (.mp4)

          Kommentar


          • #6
            Zitat von PlatinSecurity Beitrag anzeigen
            Danke für eure Ideen. Jetzt ist es so, dass er mit
            PHP-Code:
            readfile($video); 
            nichts macht und wenn ich mir anschaue wieso, wird mir das hier angezeigt

            Also stimmt da ja irgendwas nicht.
            Dann schau dir das PHP Error-Log an.

            Ich versteh nicht, warum man dir das immer wieder sagen muss.

            Kommentar


            • #7
              Zitat von PlatinSecurity Beitrag anzeigen
              Danke für eure Ideen. Jetzt ist es so, dass er mit
              PHP-Code:
              readfile($video); 
              nichts macht und wenn ich mir anschaue wieso, wird mir das hier angezeigt

              Also stimmt da ja irgendwas nicht.
              Mit dem
              PHP-Code:
              header('Content-Type: audio/mp4'); 
              davor das selbe.

              Wahrscheinlich versucht er ja auch die Datei lokal zu lesen?!
              Da liegt sie aber nicht sondern auf meiner FritzBox.

              Da ich ne FTP Verbindung aufgebaut hab, ist das
              PHP-Code:
              ftp_get(); 
              auch keine gute Lösung, da es ja dann wieder auf meinem Server hinterlegt wird das Video und da kommt ja das Speicher problem wieder zu stande.

              Und
              PHP-Code:
              file_get_contents(); 
              hilft nicht, da die FritzBox nur die FTP Verbindung zu lässt und wenn ich da drin bin gibt es für jedes Video ein Ordner mit einer ID und in diesem Ordner das Video.
              Finden konnte ich das Video ja mit
              PHP-Code:
              $watch $_GET["video"];
              if(
              ftp_chdir($connection_id$watch)){
              $video ftp_nlist($connection_id".");
              echo 
              basename($video[0]); //Ausgabe ist dann der Name des Videos mit natürlich der Endung (.mp4)

              $video muss der PFad zur Datei sein.

              du kannst FTP auch direkt ausgeben

              echo readfile("ftp://<username>:<password>@serverip(ptionalerPort)/pfad/zur/datei.mp4");
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

              Kommentar


              • #8
                Zitat von hellbringer Beitrag anzeigen
                Dann schau dir das PHP Error-Log an.
                Wenn du mir sagst wie ich mir die Log anschauen kann, ohne die Datei zu erreichen?
                Hab kein Zugriff auf die Logs.

                Zitat von BlackScorp Beitrag anzeigen
                $video muss der PFad zur Datei sein.

                du kannst FTP auch direkt ausgeben

                echo readfile("ftp://<username>:<password>@serverip(:OptionalerPort)/pfad/zur/datei.mp4");
                Ja gut ich bin ja schon mit FTP Verbunden und in dem Ordner wo das Video liegt. So ist also
                PHP-Code:
                $video ftp_nlist($connection_id"."); 
                das Video. Wenn ich das so mache wie du sagst mit dem Pfad
                PHP-Code:
                $video $watch."/".ftp_nlist($connection_id"."); 
                dann geht es leider auch nicht.

                Und direkt ansprechen wäre ja der Tod, da dann im Quellcode der Nutzername und das Passwort stehen zum FTP Server ?!

                Kommentar


                • #9
                  Hast du denn keinen Plattenplatz mehr auf dem Server?
                  Dann kauf dir eine grössere(oder 2.) Festplatte, so teuer sind die ja auch nicht.

                  Was du das machst, über ftp, kann ich nicht gut heissen.

                  Kommentar


                  • #10
                    Zitat von PlatinSecurity Beitrag anzeigen
                    Und direkt ansprechen wäre ja der Tod, da dann im Quellcode der Nutzername und das Passwort stehen zum FTP Server ?!
                    und wie machst du jetzt mit ftp_login() ? soweit ich weiß brauchst du da auch username und passwort die stehen ja dann auch da


                    Zitat von PlatinSecurity Beitrag anzeigen
                    Ja gut ich bin ja schon mit FTP Verbunden und in dem Ordner wo das Video liegt. So ist also
                    PHP-Code:
                    $video ftp_nlist($connection_id"."); 
                    das Video. Wenn ich das so mache wie du sagst mit dem Pfad
                    PHP-Code:
                    $video $watch."/".ftp_nlist($connection_id"."); 
                    das Problem ist, dass readfile ein lokalen pfad braucht oder wenn der pfad extern geht, dann muss es mit dem richtigen Protokoll angegeben werden, also http oder ftp. du kannst nicht den Pfad vom FTP aus Sicht des home directory des ftp servers da ausgeben.

                    du hast zwei varianten

                    1) du lädst es runter und leitest die lokale version weiter
                    2) so wie ich es vorhin gezeigt habe, da brauchst du kein ftp_login mehr usw

                    EDIT: außerdem ftp_nlist gibt dir eine Liste, du musst schon sagen welches Element du aus der Liste auswählst um ein String zu kriegen

                    bei basename($video[0]) hast du ja auch $video[0] geschrieben, sprich du hast das erste Element aus der Liste ausgewählt

                    $itemsOnServer = ftp_nlist($connection_id, ".");

                    $video = $watch."/".$itemsOnServer[0];

                    das wäre richtig, hilft aber bei deinem Problem nicht weiter
                    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                    Kommentar


                    • #11
                      Zitat von BlackScorp Beitrag anzeigen
                      und wie machst du jetzt mit ftp_login() ? soweit ich weiß brauchst du da auch username und passwort die stehen ja dann auch da
                      Ja das steht aber nicht im Browser Quellcode.
                      Wenn ich direkt das Video mit "ftp://usernameasswort@adresse/pfad/video.mp4" anspreche steht es ja im Browser-Quellcode
                      und gerade eben wo ich das hier schreibe, hat das auch nicht funktioniert. Ich versteh nicht wieso ich das Video nicht direkt ansprechen kann.
                      Berechtigung steht auf 777 ... Das muss doch irgendwie gehen mit dieser blöden FritzBox :'D

                      Zitat von BlackScorp Beitrag anzeigen
                      $itemsOnServer = ftp_nlist($connection_id, ".");

                      $video = $watch."/".$itemsOnServer[0];

                      das wäre richtig, hilft aber bei deinem Problem nicht weiter
                      Ok so hab ich es auch ich tippe immer ab / mach es aus dem Kopf um es zu erklären und mach manchmal was dummes rein, was ich gar nicht im Code hab. xD

                      Kommentar


                      • #12
                        Zitat von PlatinSecurity Beitrag anzeigen
                        Ja das steht aber nicht im Browser Quellcode.
                        Wenn ich direkt das Video mit "ftp://usernameasswort@adresse/pfad/video.mp4" anspreche steht es ja im Browser-Quellcode
                        nein eben nicht. du rufst auf video.php?video=irgendwas.mp4 und in der video.php machst du eben readfile(ftp..) im browser steht video.php nicht das passwort. wir könnten alle nicht arbeiten wenn im Browser der PHP Code stehen würde..

                        Zitat von PlatinSecurity Beitrag anzeigen
                        und gerade eben wo ich das hier schreibe, hat das auch nicht funktioniert. Ich versteh nicht wieso ich das Video nicht direkt ansprechen kann.
                        Berechtigung steht auf 777 ... Das muss doch irgendwie gehen mit dieser blöden FritzBox :'D
                        Naja das funktioniert ja auf deinem Lokalen PC auch nicht, du musst ja auch erst mit FTP programm auf dem server landen und das Video herunterladen damit du das mit VLC öffnest



                        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                        Kommentar


                        • #13
                          das wäre deine video.php

                          PHP-Code:
                          <?php
                          error_reporting
                          (-1);
                          ini_set('display_errors','On');

                          $watch = isset($_GET["video"])?$_GET['video']:null;

                          if(!
                          $watch){
                          //Hier kannst du mit FTP list usw eventuell eine Liste aufstellen und dann auf video.php?video=name dann verlinken
                          die("Video auswählen");
                          }
                          $username ="foo";
                          $password ="bar";
                          $server "localhost";
                          $port 21;
                          $videoFolder "videos/";
                          $fileName $watch.'.mp4';
                          $videoPath $videoFolder.$fileName;


                          $ftpResource sprintf("ftp://%s:%s@%s:%d/%s",$username,$password,$server,$port,$videoPath);
                          header('Content-Type: audio/mp4');  
                          $readBytes readfile($ftpResource);
                          die Zugangsdaten stehen in der video.php drin und nicht im Browser oder URL
                          apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                          Kommentar


                          • #14
                            Zitat von PlatinSecurity Beitrag anzeigen
                            Wenn du mir sagst wie ich mir die Log anschauen kann, ohne die Datei zu erreichen? Hab kein Zugriff auf die Logs.
                            1. Programmieren tut man auf einem Entwicklungssystem, auf dem man volle Kontrolle hat. Somit sieht man auch die Log-Files.

                            2. Wo die Log-Files vom Produktivserver liegen, sollte dir der Server-Admin sagen können. Wenn nicht, ist er nicht dafür geeignet einen Server zu betreiben und du solltest dir schleunigst einen anderen Betreiber suchen.

                            Kommentar


                            • #15
                              Zitat von BlackScorp Beitrag anzeigen

                              ja genau das meinte ich, nicht passthru.. wenn die Finger nicht das tun was der Kopf vorhatte
                              Damit warst du aber gar nicht so schlecht unterwegs. Denn... Wenn man eine mp4-Datei via readfile überträgt, kann man nichts vor- oder zurückspulen, bis die Videodaten vollständig geladen wurden.

                              Mit HTTP_RANGE und fpassthru könnte das es klappen. Da ist PHP aber das falsche Werkzeug für, glaube ich.
                              Vielleicht ginge auch so Zeugs wie adhoc generierten Symlinks mit kryptischen Namen für die Videofiles, die nach $TTL verfallen und auf die man dann via 302 leitet. Ach, keine Ahnung.

                              Zitat von hellbringer Beitrag anzeigen
                              2. Wo die Log-Files vom Produktivserver liegen, sollte dir der Server-Admin sagen können. Wenn nicht, ist er nicht dafür geeignet einen Server zu betreiben und du solltest dir schleunigst einen anderen Betreiber suchen.
                              Hat er nicht irgendwas von Fritzbox geschrieben? Wobei ich das jetzt mit dem Zusammenhang vor Augen echt komisch finde.

                              Kommentar

                              Lädt...
                              X