04. december 2003 - 18:42Der er
10 kommentarer og 1 løsning
Hjælp til optimering af thumb script
Hej,
I nat fik jeg lavet nedenstående kode. Koden virker som sådan vældig fint, bortset fra at den trækker tænder ud på serveren, og jeg måtte ændre memory_limit fra 8MB til 22MB, for at scriptet kunne køre.
Nu søger jeg så lidt hjælp til at gøre scriptet lidt hurtigere, og bruge mindre ram.
<?php include("class.php"); gallery::dbConn(); error_reporting(E_ALL); if ($_GET['i']) { $res = mysql_query("SELECT ImgPath, ImgNameConv, ImgOrgHeight, ImgOrgWidth, ImgType FROM images WHERE ImgNameConv = '".$_GET['i']."'") or die(mysql_error()); $path = mysql_result($res, 0, "ImgPath"); $src = mysql_result($res, 0, "ImgNameConv"); $orgw = mysql_result($res, 0, "ImgOrgWidth"); $orgh = mysql_result($res, 0, "ImgOrgHeight"); $type = mysql_result($res, 0, "ImgType"); $width = $_GET['w']; $srcpath = $path."/".$src; $thpath = $path."/t_".$src; // Chek om der lavet en thumb og om den er med den rigtige vidde. $a = @getimagesize($thpath); if (file_exists($thpath) && $a[0] == $width) { header("Content-type: ".$type); $data = fread(fopen($thpath,"r"),filesize($thpath)); print $data; exit; } else { // Hvis ikke, så laver vi den // laver beregninger på det nye billedes størrelse $mh = 0; $mw = 0; if ($orgh > $orgw) { $mh = 0; $mw = ($orgh-$orgw) / 2; } if ($orgh < $orgw) { $mw = 0; $mh = ($orgw-$orgh) / 2; } $m=$orgh; if ($orgw > $orgh) { $m = $orgw; } $img_in = imagecreatefromjpeg($srcpath); $img_tmp = imagecreatetruecolor($m,$m); $img_tmp_c = imagecopy($img_tmp,$img_in,$mw,$mh,0,0,$orgw,$orgh); $img_out = imagecreatetruecolor($width,$width); $img_out_c = imagecopyresized($img_out, $img_tmp, 0, 0, 0, 0, $width,$width,$m,$m); imagedestroy($img_in); imagedestroy($img_tmp); imagedestroy($img_tmp_c); imagedestroy($img_out_c); header("Content-type: ".$type); imagejpeg($img_out, "", 50); // new line imagejpeg($img_out, $thpath, 50); imagedestroy($img_out); exit; } } ?>
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det lyder meget underligt, at dette skulle tage så mange resourcer, som du beskriver... Jeg har noget lignende kørende på min egen server, og ikke mindst b-one, og hvis det kan køre på b-one, så burde det også kunne køre på din computer... Kan man få at vide, hvilken computer du har, og hvilket styresystem, server, php version osv.?
I funktionen står der $img_des = imagecreate($width,$height); // imagecreatetruecolor imagecreate er til GD lib før 2+, og den i kommentaren er så efter 2+
Ja, det er den her: imagecreatetruecolor(width, height);
Det bruger jeg også. Som jeg skrev i mit sidste indlæg, kommer det an på hvilken version af PHP man har...
Men jeg må indrømme, at jeg ikke synes at en 433 mHz Celeron med 128MB ram ikke er den hurtigste maskine, men den burde vel nok kunne resize et par billeder.... Hvor mange billeder snakker vi om?
Hmm... Har du eventuelt prøvet at ligge det på en public server, og så se, hvor meget guf den tager fra den server? Eventuelt kigge på, hvor længe den tager om at generere siden...
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.