Jeg har en hjemmeside, hvor meningen er at man kan ftp-uploade et
bibliotek med billeder. Hjemmesiden skal så via php første gang man går
ind på siden generere thumbnails af alle billederne. Jeg har en algoritme
som virker fint, men problemet er at hvis der er mange billeder så timer
php execution time ud:
Fatal error: Maximum execution time of 30 seconds exceeded in list.php on
line 28
Jeg har ikke serveren som siden skal ligge på, så jeg kan ikke ændre
timeout grænsen. Nogle forslag? en processbar eller noget?
Tak på forhånd
- Bjarke
Koden:
---------
<?php
function createThumbs($galleryDir){
$thumbSizeX = 60;
$thumbSizeY = 45;
$thumbImage = ImageCreateTrueColor($thumbSizeX, $thumbSizeY);
mkdir("{$galleryDir}thumbs");
$dir = opendir($galleryDir);
while ($filename = readdir($dir)){
if (substr(strtolower($filename),-4) == ".jpg" ||
substr(strtolower($filename),-5) == ".jpeg") {
$sourceImage = imagecreatefromjpeg("$galleryDir$filename");
$imageRatio = imagesx($sourceImage) / imagesy($sourceImage);
if($imageRatio < 1.333) {
$tempThumb = ImageCreateTrueColor($thumbSizeX,
($thumbSizeX / $imageRatio));
imagecopyresampled($tempThumb, $sourceImage, 0, 0, 0, 0,
$thumbSizeX, ($thumbSizeX / $imageRatio),
imagesx($sourceImage), imagesy($sourceImage));
$thumbImage = ImageCreateTrueColor($thumbSizeX, $thumbSizeY);
imagecopy($thumbImage, $tempThumb, 0, 0, 0,
(imagesy($tempThumb)/2-($thumbSizeY / 2)), $thumbSizeX,
$thumbSizeY);
}else{
$tempThumb = ImageCreateTrueColor(
($thumbSizeY * $imageRatio), $thumbSizeY);
imagecopyresampled($tempThumb, $sourceImage, 0, 0, 0, 0,
($thumbSizeY * $imageRatio), $thumbSizeY,
imagesx($sourceImage), imagesy($sourceImage));
imagecopy($thumbImage, $tempThumb, 0, 0,
(imagesx($tempThumb)/2-($thumbSizeX / 2)), 0, $thumbSizeX,
$thumbSizeY);
}
imagejpeg($thumbImage,"{$galleryDir}thumbs/$filename" ,50);
imagedestroy($sourceImage);
imagedestroy($tempThumb);
}
}
closedir($dir);
imagedestroy($thumbImage);
}
?>
|