Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ресайз фотографий на лету
 
 автор: TetRiska   (19.12.2011 в 16:43)   письмо автору
 
 

Всем привет. Постал вопрос об экономии места на хостинге, поэтому хотел бы узнать об эффективности ресайза фотографий на лету. Т.е. сервер отдает большую фотографию (оригинал) и потом php-скриптом идет ее ресайз и пользователь получает фотографию нужного размера. Есть одно сомнение в нагрузке на сервер. Допустим на главной сайта я выгружаю 50 фоток если их все ресайзить, то как это скажется на сервере, не повиснет, не будет тупить? Посещаемость растет, сейчас уже 50 посетителей постоянных онлайн, вскоре будет 200 и больше. Вот примерная ф-ция которую бы я использовал:
function onlineresize($f,$type=1){
    if ($type == 0) $w = 70;
    if ($type == 1) $w = 90;
    if (!isset($q)) $q = 100;
    $src = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].'/'.$f); 
    $w_src = imagesx($src); 
    $h_src = imagesy($src);
    header("Content-type: image/jpeg"); 
    if ($w_src > $w){
        $dest = imagecreatetruecolor($w,$w); 
        if($w_src>$h_src){
            imagecopyresized($dest, $src, 0, 0, round((max($w_src,$h_src)-min($w_src,$h_src))/2),0, $w, $w, min($w_src,$h_src), min($w_src,$h_src)); 
        }else if($w_src<$h_src){
            imagecopyresized($dest, $src, 0, 0, 0, 0, $w, $w,min($w_src,$h_src), min($w_src,$h_src)); 
        }else if($w_src==$h_src){
            imagecopyresized($dest, $src, 0, 0, 0, 0, $w, $w, $w_src, $w_src); 
        }
        imagejpeg($dest,'',$q); 
        imagedestroy($dest); 
        imagedestroy($src); 
    } 
}

в хтмл коде
<img border="0" width="90" height="90" src="/requests/resizer.php?photo='.$res['result']['em_produce_image3'][0].'" />

resizer.php
<?php
    
if(isset($_GET['photo'])){
    
$photo magic_off(strval($_GET['photo']));
    
onlineresize($photo);
}

?>    

  Ответить  
 
 автор: Slo_Nik   (19.12.2011 в 18:01)   письмо автору
 
   для: TetRiska   (19.12.2011 в 16:43)
 

если встал вопрос о месте на сервере, то почему бы сразу не заливать туда изображения нужного размера?
Залил оригинал, уменьшил до нужного размера, потом удалил оригинал...

  Ответить  
 
 автор: TetRiska   (19.12.2011 в 18:36)   письмо автору
 
   для: Slo_Nik   (19.12.2011 в 18:01)
 

я так и делаю что пложу копи уже уменьшенные, на 1 товар у меня выходит по 4 копии - 70х70, 100х100, 180х135, 320х240.....уже товаров 32 тищи, то файлов накопилось много

  Ответить  
 
 автор: Sfinks   (19.12.2011 в 19:28)   письмо автору
 
   для: TetRiska   (19.12.2011 в 18:36)
 

максимальный размер изображения 320х240? 50 штук на страницу? А 50 Онлайн у вас это 50 хостов за какое время? 15 минут или час? допустим 15 минут.... примерно 3 чела в минуту, примерно 1 в 20 секунд. т.е. 50 конвертов раз в 20 секунд. Это ваще не нагрузка. Только вы кеширование включите обязательно, чтоб юзер не грузил одну фотку по 20 раз подряд. И лучше браузер надуть не показывая ему что это пхп файл, а не jpeg.

  Ответить  
 
 автор: TetRiska   (19.12.2011 в 19:59)   письмо автору
 
   для: Sfinks   (19.12.2011 в 19:28)
 

1 - 320х240 максимальный
2 - 50 онлайн на данный момент
3 - кешировать нельзя, т.к. контент всегда разный, т.е. рандом

  Ответить  
 
 автор: Sfinks   (19.12.2011 в 23:34)   письмо автору
 
   для: TetRiska   (19.12.2011 в 19:59)
 

> 3 - кешировать нельзя, т.к. контент всегда разный, т.е. рандом
Что при одном и том же товаре вы загружаете любой файл и ресайзите его???
Не думаю. Может список товаров на странице рандомный?
Я говорю не про кеширование страницы, а именно про кеширование браузером ресайзнутого рисунка.
Подумайте хорошенько.... Вы же в файл resizer.php передаете параметр, который идентифицирует какой файл нужно переразмерить? Если подключить mod_rewrite, то можно сделать так, что у каждого файла картинки в браузере будет уникальный урл, например "/img/tov126/size240x320/foto.jpg", и он будет думать что это тот же файл и не будет его перезагружать, а уже на стороне сервера апач будет редиректить запрос на файл resizer.php с нужными параметрами.

  Ответить  
 
 автор: TetRiska   (20.12.2011 в 13:09)   письмо автору
 
   для: Sfinks   (19.12.2011 в 23:34)
 

список товаров на странице всегда разный при каждом обновлении страницы

  Ответить  
 
 автор: Sfinks   (20.12.2011 в 20:14)   письмо автору
 
   для: TetRiska   (20.12.2011 в 13:09)
 

Я понял что список разный. А фото у одного и того же товара одинаковое? Значит его можно кешировать.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования