[PHP] Files met gzip compressen en sturen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • cixx
  • Registratie: Augustus 2005
  • Laatst online: 28-09-2024
Ik heb een probleem wat ik niet alleen opgelost krijg.
Ik heb een site waar mensen .nzb bestanden naar kunnen uploaden. Nzb's zijn gewone textbestandjes in het xml formaat (Hier een voorbeeld van zon bestand: http://stuff.cixx-online.com/demo.nzb (voor mods: dit is niet illegaal, het is een demo van een spel)).

Aangezien deze bestanden best groot zijn(tussen de 250 en 3000kb) wou ik ze gzippen, niet voor de schijfruimte, maar om bandwidth te besparen.
Er zijn meerdere sites die dit zo doen met hun nzb's. Ik wou dat dus ook doen, maar daar loop ik vast.
Ik heb de hele dag al lopen googlen naar voorbeelden en heb langzamerhand de hele PHP manual al doorgelezen maar ik kom er echt niet uit.
Wat ik al wel door heb is dat ik gzencode() moet gebruiken maar verder houd het ook op.

Wat ik wil is:

User upload .nzb bestand //heb ik al
|
File wordt moved naar andere folder //heb ik al
|
File wordt renamed zodat alle underscores, haakjes, puntjes enz.. er uit zijn. //heb ik al
|
File wordt vervolgens gzipped //dit heb ik nog niet

Vervolgens als iemand het bestand wil downloaden wil ik dat het .gz bestand wordt gestuurd, maar dat browsers hem gewoon als .nzb herkennen.
Dit laatste heb ik nog niet uitgeprobeerd maar ik denk niet dat het een probleem wordt, maar als iemand snel een antwoord voor mij weet dan mag hij het neerzetten ;)
( header ("Content-Type: application/x-gzip"); of header ("Content-Type: application/gzip"); klopt dit?)

Hopelijk kan iemand mij verder helpen!

Acties:
  • 0 Henk 'm!

Verwijderd

Doe het gewoon met de zlib.output_compression configuratie optie. Dan gaat het helemaal vanzelf als de client zlib compressie ondersteunt.

Acties:
  • 0 Henk 'm!

  • cixx
  • Registratie: Augustus 2005
  • Laatst online: 28-09-2024
Hoe bedoel je zlib.output_compression?

Ik heb daar op gezocht en kwam bij deze functie

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

function compress( $srcFileName, $dstFileName )
{
   // getting file content
   $fp = fopen( $srcFileName, "r" );
   $data = fread ( $fp, filesize( $srcFileName ) );
   fclose( $fp );
   
   // writing compressed file
   $zp = gzopen( $dstFileName, "w9" );
   gzwrite( $zp, $data );
   gzclose( $zp );
}

?>


Als ik dit probeer krijg ik "Warning: fopen() [function.fopen]: Unable to access ff43423fdf.nzb in **************/nzb/v3/upload.php on line 69"

En daarna nog een hele zooi stream recource fouten.

Moet ik het bestand eerst CHMOD'en?

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Kijk eens naar http://atlex.nl/index/gzip. Die methode zou gewoon moeten werken. :)

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • cixx
  • Registratie: Augustus 2005
  • Laatst online: 28-09-2024
Als ik het via jou methode doe AtleX dan is de site wel compressed maar als ik zon .nzb wil downloaden dan is die maar 2.2kb (allemaal van de 150 stuksdie er op staan).

Dus dat werkt niet echt. Ik moet echt alleen een functie hebben die het .nzb bestand gzippen en vid de onderstaande manier als .nzb (maar wel gzipped) naar de users stuurt.


code:
1
2
3
header ("Content-Type: application/gzip"); 
header ("Content-Disposition: attachment; filename=$File");
readfile($filelocation);


Ik zie dat het toch wel goed gaat, thanks voor die info, ik heb hier echt heeeel lang naar gezocht!

Maar nu even een andere vraag wat hier ook nog wel even kan denk ik.
Mijn site heeft dagelijks 5000+ van deze downloads, is dit niet erg belastend voor de server?
Aangezien hij ze steeds aanmaakt ipv 1.

[ Voor 24% gewijzigd door cixx op 08-03-2007 20:59 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Kun je niet als de nzb's worden aangemaakt ze meteen gzippen, dus dat ze al gegzipt op de server staan? Moet je wel nog even een scriptje schrijven dat alle bestaande nzb's omzet in gzips.

Acties:
  • 0 Henk 'm!

  • cixx
  • Registratie: Augustus 2005
  • Laatst online: 28-09-2024
Verwijderd schreef op vrijdag 09 maart 2007 @ 15:27:
Kun je niet als de nzb's worden aangemaakt ze meteen gzippen, dus dat ze al gegzipt op de server staan? Moet je wel nog even een scriptje schrijven dat alle bestaande nzb's omzet in gzips.
Ja dat was ook mijn bedoeling hehe, daarom kwam ik ook hier ;)
Maar de serverload valt heel erg mee, zippen duurt maar 0.1 sec op de hoogste compressie stand dus.
Pagina: 1