Meine Idee oder HILFEEEE

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von alienalireal2, 11. Dezember 2004 .

Schlagworte:
  1. 11. Dezember 2004
    Wie ich so gerade beim n sitze kommt mir eine geniale Idee!

    Beim wbb ist eine funktion eingebaut, die es erlaubt, sql dateien zu erzeugen, die 8mb großwerden und on-the fly runterzuladen, obwohl zum beispiel bei funpic ein filesizelimit von 800kb herrscht! Das heißt, das diese datei automatische per php(??) generiert wird!

    Das wäre doch ideal um warez zu uppen, ein progg, dass dateien in sqls verschlüsselt und ein php(?)script, welches diese on-the-fly zusammensetzt!

    Wer kennt sich darin aus und würde mir sowas entwickeln oder mir helfen oder hat nur eine gute idee?

    Danke schonmal und ich hoffe ihr versteht, was ich meine!
     
  2. 11. Dezember 2004
    ka,

    du lädst das file mit nem tool hoch und ein script splittet es in viele sqls!
    Aber das neue daran wäre, dass man nur einen link anklickt und ein script dann aus den ganzen sqls wieder diese eine file macht!
     
  3. 11. Dezember 2004
    Soweit ich informiert bin, ist es möglich mit PHP eine Datei vom Server einzulesen, den Inhalt in eine Variable zu speichern, dann die nächste Datei lesen, den Inhalt an die Variable anhängen, usw...
    Und dann am Ende hat man eine riesige Variable und gibt die dann auf einen Schlag aus. (Hab das schonmal mit kleinen Dateien probiert, geht wirklich)
    Geht aber glaub ich nicht mit allen PHP fähigen Servern, hab schon welche gesehen, bei denen die Funktion gesperrt ist
     
  4. 12. Dezember 2004
    natürlich geht das, aber das wäre totaler schwachsinn
    da man im in der datenbank ne total lange table hat (mal abgesehen davon das man für jede zeile eine neue table machen müsste )
    von text die auch soviel belegt, wie das eigentlich file oder mehr,
    dann wäre da noch das problem das die datei villeicht zerstört
    werden kann, kopiert einfach mal ausm editor den text und fügt sie in eine neue text datei und wandelt diese um, wenn das net funzt gehts schon 10mal nicht.
    Dann beachtetet mal
    was für ein haufen arbeit für php es ist die table auszulesen,
    das würde ernorm zeit beanspruchen.
    Man könnte aber die größe des textes in der datenbank kleiner machen indem man sie vorher decodieren lassen würde,
    das würde aber ein haufen zeit kosten einen decoder extra
    für diese datei zu machen.

    Im endeffekt würde dies nur nen haufen traffic verursachen
     
  5. 12. Dezember 2004
    Die Idee ist vom prinzip her nicht schlecht, aber wohl nicht realisierbar!
    Überlege mal, selbst wenn du die gesplitteten Files nicht in einer SQL Datenbank ablegst, sondern real als Dateien und sie dann beim download on-the-fly von einem Script zusammensetzten lässt, das würde jeden PHP Server fraggen. Eine Datei so gross wie ein Film, ca. 100 User... na gute Nacht. Jeder Anbieter würde dich sofort rausschmeissen, bei der Rechenleistung die das Script benötigt, es müssen beim zusammensetzten ja auch noch interne CRC Checks gemacht werden etc.

    Aber es wäre vielleicht mal eine überlegung wert soetwas dezentral, z.b. in einem leecher programm zu realisieren...
     
  6. 12. Dezember 2004
    Habs rausgekriegt:

    Ihr erstellt ne PHP Datei auf dem Server, die wie folgt aussieht:
    PHP:
    <? php

    $rawname 
    'archiv.rar' //Der ursprüngliche Dateiname
    $blocks  5 //Anzahl Blöcke
    $position  1 ;

    header ( 'Content-Description: File Transfer' );
    header ( 'Content-Type: application/force-download' ); 
    header ( 'Content-Disposition: attachment; filename='  $rawname ); 

    while(
    $position  <=  $blocks ){
        
    readfile ( $rawname . '.' . $position );
        
    $position ++;
    }

    ?> 
    dann ladet ihr in das Verzeichnis mit der PHP Datei die einzelnen Bruchstücke hoch (bitte nicht mit WinRar die Datei "stückeln", sonst kommen da Header mit rein und es funzt nicht mehr.
    Ihr ladet also folgende Dateien hoch:

    download.php
    archiv.rar.1
    archiv.rar.2
    archiv.rar.3
    archiv.rar.4
    archiv.rar.5

    Um diese Bruchstücke zu erstellen, hab ich mal nen Programm geschrieben: (hab ich angehängt, ihr braucht aber das .net Framework, damit es läuft). Bei InputFile gebt ihr die ursprüngliche Datei an. Bei BlockSize kommt rein, wieviel Bytes jedes Bruchstück groß sein soll. Dann sollte das Programm eigentlich die Bruchstücke erstellen. (Sollte es das mal nicht tun, schreibt mir ne PN wo der Fehler drinsteht)

    Am Ende braucht nur einer über den Browser download.php aufrufen und dann schickt das script ein stück nach dem anderen durch die Leitung.

    Bei mir geht das Script, hab mal eine 6MB Datei damit gestückelt und bei Tripod hochgeladen. Funzt sehr gut und mit FullSpeed
    EDIT: Bei Funpic gehts auch, habs grade probiert
    EDIT: 20MB Datei geht auch, also denk ich mal, dass das Script funzt
     
  7. 12. Dezember 2004
    Ist ja mal ne nette idee....ich will jetzt nix nocha wiederholen
    aber wie gesagt, würde den server total ins aus schießen(mal von der arbeit abgesehen),
    außer man baut ein paar sleeps ein..aber dauert viel zu lange dann...

    @sebi: sehr nett, aber das script arbeitet ja nicht das zeugs in die datenbank ein, aber sehr bequem
    achso, ich habs mir mal angeschaut, müste das script nicht reintheoretisch alles aufeinmal durschschießen?
    nicht das das schlecht wäre, aber bei manchen geht villeicht die performance den bach runter ^^
     
  8. 12. Dezember 2004
    Aus welchem Grund sollte das passieren?
    Ob der Server jetzt eine riesige Datei einliest und an den Client schickt oder ob er nun ein paar kleine Dateien einliest und nacheinander an den Client schickt... is eigentlich egal meine ich. Da das Script ohne SQL Abfrage ist, sollte es eigentlich sogut wie gar keine Rechenzeit in Anspruch nehmen (nur eben die "normale".
     
  9. 12. Dezember 2004
    kp, auf den ersten blick sieht das script einfach so für mich aus, als würde es einfach durchlaufen bis 5

    $blocks = 5; //Anzahl Blöcke
    $position = 1;
    ...
    while($position <= $blocks){ //heist ja das es von 1 bis 5 geht
    readfile($rawname.'.'.$position); //der dateiname für die datein
    $position++; //und das die 1 jeweils und 1 erhöht wird..
    }


    dann müsste ja das script praktisch nochmal durchlaufen und 2 laden
    und dann 3.. bitte verbesser mich, manchmal kann ich halt php richtig und manchmal nischt, weil es macht schonwas aus ob ich 100 archive habe und die werden alle nacheinander geladen (standart mäßig kann man ja nur 4/2 datein aufeinmal runterladen, wenn eins fertig ist, dann kommt das nächste, nur man kann das ja ausschalten und ich denke kein 400mhz rechner haltet das aus *g* ) XD (übrigens wurde es wie oben aufgefordert das es in die sql kommt)
     
  10. 12. Dezember 2004
    Stimmt, es sollte in die SQL Datenbank rein, aber das ist ja, wurde glaube ich auch schon gesagt, mit ziemlicher Rechenbelastung für den armen Server verbunden...

    Das Script funktioniert so:

    $rawname = 'archiv.rar';
    Hier gibt man seinen Dateinamen ein

    $blocks = 5;
    Hier gibt man ein, in wie viele Blöcke seine Datei gesplittet wurde

    $position = 1;
    header('Content-Description: File Transfer');
    header('Content-Type: application/force-download');
    header('Content-Disposition: attachment; filename=' . $rawname);

    while($position <= $blocks){
    readfile($rawname.'.'.$position);
    Die Funktion ReadFile liest eine Datei vom Server und gibt sie sofort an der Client weiter, das funktioniert geilerweise auch mehrmals hintereinander

    $position++;
    nächste Datei
    }

    Es dürfte praktisch gesehen gar kein Problem sein eine 700 MB Datei so zu laden, wenn man die Einzelstücke zum Beispiel als 500kB Häppchen hat. Dann würden immer nur 500 kB eingelesen werden. Ausgeben, warten bis alles angekommen ist, nächsten 500 kB lesen, ausgeben, warten...
    Dann hat man halt 1400 Dateien und die werden nacheinander ausgegeben, ich seh da kein Problem. Sollte es doch anders funktionieren, lasse ich mich gern belehren.

    Ich empfehle aber trotzdem 15MB oder 10MB RAR Archive zu verwenden und diese dann einzeln zu splitten, sonst is es doch nicht so und der RAM vom Server wird (kurzzeitig) mit 700MB belastet und alles schmiert ab, wär ja "unschön"
     
  11. 12. Dezember 2004
    Also ist ReadFile daran schuld das es hintereinander geladen wird?
    Interresant. Danke dir, hab ich wiedermal was gelernt (habe das script ja leider net getestet^^ )
    Respekt an dich, mir wäre so ein script nicht im leben eingefallen.
    (mir fällt sowieso nichts ein)
     
  12. 17. Dezember 2004
    hat noch nich ma so viel mit rechenbelastung zu tun. denkt doch ma nach, was passieren würd, wenn jemand 600 mb an irgendwelchem zeugs in ne sql datenbank upped. es gibt denk ich keinen einzigen anbieter der so was unterstützt.


    ich glaube aber, es wäre eine interessante idee ein proggi zu schreiben, welches selber splittet und auf nen funpic acc. oder so upped...
    *sich an die arbeit macht*
     
  13. 18. Dezember 2004
    Hab meinen Splitter nochmal etwas umgeschrieben, man kann jetzt Dateien auf die EXE draufziehen und muss nur noch die Blockgröße angeben (wenn man was ungültiges eingibt oder gar nichts, wird 500000 Byte verwendet).
    Wer den Sourcecode haben will: bitte schön, is in C# geschrieben.
    URL zum ganzen Project:
    http://sebigronni.se.funpic.de/FileSplit/

    Uploaden auf irgendeinen Account kann man ja selbst machen.
     
  14. 20. Dezember 2004
    Nette Idee, aber was meint ihr wieo noch keiner vor uns darauf gestoßen ist?


    Ganz einfach, da die mySQl sehr verbunden mit dem RAM eines Server´s ist, das heißt das macht sich sofort bemerkbar auf einen Server wenn da was ist was ewig den RAM klaut.

    Aber wie gesagt Nice Idea, aber leider nicht umsetzbar........


    Denkt weiter nacht vielleicht kommt ja noch der entscheidene Punkt an den wirklich keiner denkt und der nutzbar ist =o]
     
  15. 24. Dezember 2004
    Hab mal das Script verbessert. Man braucht jetzt nicht mehr die Anzahl Blöcke festlegen.

    PHP:
    <? php

    $rawname 
    'archiv.rar' //Der ursprüngliche Dateiname
    $position  1 ;

    header ( 'Content-Description: File Transfer' );
    header ( 'Content-Type: application/force-download' ); 
    header ( 'Content-Disposition: attachment; filename='  $rawname ); 

        while(
    1 ){   //Endlosschleife
            
    if( file_exists ( $rawname . '.' . $position )){  //Wenn Datei existiert
                
    readfile ( $rawname . '.' . $position );  //ausgeben
            
    }else{   //sonst
                
    exit;  //nicht
            
    }
            
    $position ++;
        }

    ?> 
    EDIT:
    Hab mal auf meinem Rechner nen Webserver und PHP installiert und über dieses Script über Netzwerk versucht ne Datei zu ziehen (600MB): Ergebnis: Taskmanager lief die ganze Zeit aber von irgendeinem Speicherfresser hab ich nix mitgekriegt... Also wie es bei ner echten SQL Datenbank is, weiß ich nich, aber wenn man die Dateien direkt ins Dateisystem speichert, dann dürfte niemand etwas merken
     
  16. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.