Avatar billede eksperten1 Nybegynder
20. maj 2008 - 13:32 Der er 4 kommentarer og
1 løsning

Hurtigste (CPU mæssigt) metode at sende jpg

Jeg har et site hvor et script bruger nogle $_GET parametre til at vide hvilket billede der skal vises.

Det bruger jeg til at sammensætte en sti hvorefter jeg egenligt bare echo'er den fil : se herunder!

Nå men problemet er at det er rigtig langsommeligt - der er en masse besøgende i disse dage - omkring 20.000 om dagen - måske 150.000 billeder bliver vist inden for 12 timer.

Jeg har en maskine der kun skal gøre dette - Nyere Dell server, 1CPU, 3GB RAM, Win2003 Server, Apache 2 (nyeste), PHP 5 (nyeste)

Men når det kører så er der altså nogle grimme svartider på op imod 10 sekunder for et billede der er omkring 60KB - den står hos PlusHost med rigeligt båndbredde o.s.v.

Kan jeg optimere på det her, eller skal jeg bare gå direkte til billedet istedet for igennem PHP (oprindeligt skulle der lægges et vandmærke på - men det har jeg droppet)

Gode råd ønskes til optimering


$basepath = "D:\\inetpub\\runimages\\";
$size = $_GET['size'];
$eventid = $_GET['event'];
$pic = $_GET['pic'];
$dir = ($size == "thumb" ? "\\thumb\\" : "\\org\\");

$img = $basepath . $eventid . $dir . substr($pic,0,5) ."\\". $pic .".JPG";

if (!is_file($img)) $img = "D:\\inetpub\\404_error.jpg";
header('content-type: image/jpeg');
echo readfile( $img );
Avatar billede eksperten1 Nybegynder
20. maj 2008 - 13:33 #1
Lige en opklaring - den Dell server laver altså kun det ene, at hoste JPG filer - intet andet pt. Selve sitet ligger på en anden server - også dedikeret.
Avatar billede jakobdo Ekspert
20. maj 2008 - 19:59 #2
Kan du ikke lave en måde, hvor php ikke skal bruge kræfter på at læse og levere filen ?
Så du blot lader webserveren servere billedet i stedet for ?
Avatar billede eksperten1 Nybegynder
20. maj 2008 - 21:02 #3
Jo og det er jeg også endt med at gøre - men skræmmende nok så selv om jeg lavede et nyt site i Apache der pegede direkte ned på billederne - så brugte den fortsat en masse kræfter på at serve dem - da jeg skiftede over til IIS så pludselig gik det lynhurtigt - og uden særlig stor cpu/ram forbrug - meget underligt.
Avatar billede eksperten1 Nybegynder
20. maj 2008 - 21:03 #4
jeg lukker da det ligesom gik op i røg spørgsmålet
Avatar billede jakobdo Ekspert
20. maj 2008 - 21:50 #5
IIS har garanteret en indygget måde at cache billederne på, og dermed spare noget IO på harddisken... (blot et gæt)
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