---
title: "timeout vid skapande av tumnaglar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/124293-timeout-vid-skapande-av-tumnaglar"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "greymane"
published: "2005-03-13T16:39:42.000Z"
updated: "2005-03-14T14:59:36.000Z"
replies: 8
views: 299
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/124293-timeout-vid-skapande-av-tumnaglar"
---

# timeout vid skapande av tumnaglar

## #1 — greymane, 2005-03-13T16:39Z

jag använder följande skript för generering av tumnaglar:

```php
<?

// scalePic(infil, utfil, max X-storlek, max Y-storlek, kvalitet (0-100));

function scalePic($filnamn, $nyttfilnamn, $maxX, $maxY, $kvalitet = 75) {
    $im = ImageCreateFromJPEG($filnamn);
    
	
    $im_width=imageSX($im);
    $im_height=imageSY($im);
    
    if ($maxX > $maxY) {
        $factor = $maxX/$im_width;
        $new_width = $maxX;
        $new_height = $im_height * $factor;
        }
    else {
        $factor = $maxY/$im_width;
        $new_width = $maxY;
        $new_height = $im_height * $factor;
        }
    
    // resize
    $new_im=imagecreatetruecolor($new_width,$new_height);
     ImageCopyResampleBicubic($new_im,$im,0,0,0,0,$new_width,$new_height,$im_width,$im_height);

    // output
    Imagejpeg($new_im,$nyttfilnamn,$kvalitet); // quality 75
        
    // cleanup
    ImageDestroy($im);
    ImageDestroy($new_im);
    }

    
function ImageCopyResampleBicubic ($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)
/*
port to PHP by John Jensen July 10 2001 -- original code (in C, for the PHP
GD Module) by [email]jernberg@fairytale.se[/email]
*/
{
    for ($i = 0; $i < 256; $i++) {  // get pallete. Is this algoritm correct?
        $colors = ImageColorsForIndex ($src_img, $i);
        ImageColorAllocate ($dst_img, $colors['red'], $colors['green'], $colors['blue']);
    }

    $scaleX = ($src_w - 1) / $dst_w;
    $scaleY = ($src_h - 1) / $dst_h;

    $scaleX2 = $scaleX / 2.0;
    $scaleY2 = $scaleY / 2.0;

    for ($j = $src_y; $j < $dst_h; $j++) {
        $sY = $j * $scaleY;

        for ($i = $src_x; $i < $dst_w; $i++) {
            $sX = $i * $scaleX;

            $c1 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX, (int) $sY + $scaleY2));
            $c2 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX, (int) $sY));
            $c3 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX + $scaleX2, (int) $sY + $scaleY2));
            $c4 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX + $scaleX2, (int) $sY));

            $red = (int) (($c1['red'] + $c2['red'] + $c3['red'] + $c4['red']) / 4);
            $green = (int) (($c1['green'] + $c2['green'] + $c3['green'] + $c4['green']) / 4);
            $blue = (int) (($c1['blue'] + $c2['blue'] + $c3['blue'] + $c4['blue']) / 4);

            $color = ImageColorClosest ($dst_img, $red, $green, $blue); 
            ImageSetPixel ($dst_img, $i + $dst_x, $j + $dst_y, $color); 
        }
    }
}

?>
```

 

När jag anropar skriptet får jag följande fel:

> Fatal error: Maximum execution time of 30 seconds exceeded in /home/ServerRoots/www/album/gd_source.php on line 60

 

Raderna kring 60:

```php
            $c1 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX, (int) $sY + $scaleY2));
            $c2 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX, (int) $sY));
            $c3 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX + $scaleX2, (int) $sY + $scaleY2));
            $c4 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX + $scaleX2, (int) $sY));
```

vad beror det på? finns nåt sätt att få fram ngn debugginginfo? ImageColorsForIndex() samt ImageColorAt() har jag provat var för sig utan att kunna reproducera felet.

/r
under tiden jag kör php-filen tar apache drygt 90 % av cpu:n.  någonting är ju märkligt här! :)

Permalänk: https://www.webforum.nu/p/124293

## #2 — kjell, 2005-03-13T21:43Z

Jag förstår inte rikitgt varför man gjort funktionen ImageCopyResampleBicubic() Det ser jobbigt ut att bara titta på den.
Går det inte lika bra att använda [imagecopyresampled](http://se2.php.net/manual/en/function.imagecopyresampled.php) eller är det något speciellt du är ute efter mer än att bara skala bilden?

Permalänk: https://www.webforum.nu/p/1572305

## #3 — greymane, 2005-03-13T21:54Z

ingen aning :) jag har bara kopierat funktionen. Jag vill minnas att det var Mungo som gav mig funktionen. Är det bara att byta ut funktionerna rakt av eller?

Permalänk: https://www.webforum.nu/p/1572309

## #4 — kjell, 2005-03-13T21:58Z

Ok, jag tror det finns massor av skript här i forumet som skalar bilder om man söker. Gjorde ett själv för inte så länge sedan.
<http://www.webforum.nu/showthread.php?forumid=23&threadid=116443>

Permalänk: https://www.webforum.nu/p/1572312

## #5 — Duffer, 2005-03-14T06:10Z

En ren gissning (har aldrig sett felet innan) Kan det inte vara så att din funktion är för "tung" för där sidan ligger, t.ex. om den ligger på ett webbhotell som har begränsat användarna till användandet av processorn så man bara får använda processorn i 30sec? som sagt ingen aning

Permalänk: https://www.webforum.nu/p/1572363

## #6 — greymane, 2005-03-14T08:31Z

ja jag ska nog ta och kika på lite alternativ. Det är bara det att jag har använt funktionen innan, den gången på ett kommersiellt webbhotell, nu kör jag det på min egen server. 

skriptet ska inte vara för tungt, inte såå tungt iaf. Jag har ju som sagt kört det innan. Jag ändrade timeouten till 90 sekunder. 90 sekunder för att skala en bild på en knapp megabyte tycker jag låter väldigt mycket.

Permalänk: https://www.webforum.nu/p/1572400

## #7 — greymane, 2005-03-14T13:55Z

jag har nu provat skriptet på ett webhotell med lyckat resultat. Hotellet kör en P4 2,6 ghz. Själv kör jag en Celeron 433 mhz. Är det där skon klämmer? Är skriptet verkligen så resurskrävande? Jag har ingen aning själv, hur tungt är det att modifiera en bild?

Permalänk: https://www.webforum.nu/p/1572553

## #8 — jepsO, 2005-03-14T14:41Z

Jag använder själv samma script, och visst brukar det ta ett par sekunder innan tumnageln skapats på servern. Tyvärr känner jag inte till någon prestanda för webbhotellet jag använder.

Loopar du funktionen för att göra om flera bilder på en gång? I så fall kan du överväga att minska antalet bilder som ska förminskas per körning.

Permalänk: https://www.webforum.nu/p/1572572

## #9 — greymane, 2005-03-14T14:59Z

nej, jag kör bara en bild i taget.  några sekunder kan jag acceptera, men 90 blir lite väl mycket... finns det måntro nåt skript som är mindre krävande?

Permalänk: https://www.webforum.nu/p/1572588

---

Tråden på webben: https://www.webforum.nu/amne/php/124293-timeout-vid-skapande-av-tumnaglar
