Avatar billede mhaahr2 Nybegynder
11. november 2010 - 10:50 Der er 9 kommentarer og
1 løsning

Komprimere en mappe

Jeg har en mappe, med en stor mængde billeder. Jeg har brug for at pakke og komprimere en mappe. Om det er zip, gz, tar eller rar - er ligegyldigt. Pt. prøver jeg at zippe mappen, men løber ind i en timeout, fordi operationen tager for lang tid. Der er tale om ca. 800MB billeder. SafeMode er enabled, så jeg kan ikke rette på timelimit.

Nogen bud?
Avatar billede sergei_ Juniormester
11. november 2010 - 11:14 #1
Har aldrig stødt på problemet. Prøv med rar i stedet.
Avatar billede mhaahr2 Nybegynder
11. november 2010 - 11:35 #2
Hvordan?
Avatar billede wanze Nybegynder
11. november 2010 - 12:24 #3
At bruge en anden komprimeringsmetode er ikke en løsning - problemet er timeout, altså at han ikke kan gøre det hurtigt nok. Jeg tvivler på, at rar-komprimering er så meget hurtigere, at den ikke vil lave timeout.

Jeg tror desværre ikke det er muligt.
Avatar billede coderdk Praktikant
11. november 2010 - 12:39 #4
Pak uden komprimering - Med billeder vinder du alligevel ikke rigtig noget ved det. Evt brug ren tar (tar cf billeder.tar din_mappe)
Avatar billede mhaahr2 Nybegynder
11. november 2010 - 13:18 #5
coderdk: Jeg har ikke adgang til exec() - så tar på den måde, er ikke muligt... Har prøvet med Archive_Tar (PEAR) samme problem....
Avatar billede coderdk Praktikant
11. november 2010 - 13:28 #6
lav en glob() eller lignende på filerne og lav flere mindre pakker?
Avatar billede mhaahr2 Nybegynder
11. november 2010 - 15:40 #7
Kan du komme med et eksempel?
Avatar billede coderdk Praktikant
11. november 2010 - 16:59 #8
Well noget i stil med:

$billeder = 50; // Hvor mange pr loop
$filer = glob( "billeder/*.jpg" ); // Sti til billederne

$count = count( $filer );
$page = isset( $_GET['page'] ) ? intval( $_GET['page'] ) : 0;
$start = $page * $billeder;
$end = $start + $billeder;
if ( $end > $count )
{
  $end = $count;
}
for ( $i = $start; $i < $end; $i++ )
{
  // Tilføj $files[$i] til dit arkiv
}
if ( $end >= $count )
{
  die( "Færdig" );
}
header( "Location: " . $_SERVER['PHP_SELF'] . "?page=" . ( $page + 1 ) );
exit;
Avatar billede mhaahr2 Nybegynder
27. maj 2011 - 16:03 #9
#8 - Det løste problemet. Kom med et svar.
Avatar billede coderdk Praktikant
27. maj 2011 - 16:26 #10
Yessir :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester