Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Катинки тормозят сайт

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Tsigyr
Отправлено: 16 Мая, 2013 - 20:22:41
Post Id


Гость


Покинул форум
Сообщений всего: 83
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Всем привет. На сайте есть вывод скриншотов, 10 штук на каждой странице, которые выводятся в уменьшенном виде с помощью <img src="/img/1.jpg" width="135" height="135" alt=""/>. Каждый скриншот весит в среднем 700-1500кб. Так вот, при обновлении страницы они долго грузятся, что тормозит сайт. Как можно исправить это?

(Отредактировано автором: 16 Мая, 2013 - 20:58:11)

 
 Top
DelphinPRO
Отправлено: 16 Мая, 2013 - 21:07:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




при загрузке картинок на сервер генерировать маленькие превью и показывать их


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Мелкий Супермодератор
Отправлено: 16 Мая, 2013 - 21:08:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Разумеется, сделать нормальные превьюшки.


-----
PostgreSQL DBA
 
 Top
Tsigyr
Отправлено: 16 Мая, 2013 - 21:13:25
Post Id


Гость


Покинул форум
Сообщений всего: 83
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




А другие варианты есть? Просто на сайт контент уже добавлен..
 
 Top
Мелкий Супермодератор
Отправлено: 16 Мая, 2013 - 21:24:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ну это ваши трудности. что вы с чего-то решили не делать превьюшки изначально. Они должны быть и других вариантов здесь нет. Варианты могут быть только в том, как превьюшки сделать с наименьшими усилиями.


-----
PostgreSQL DBA
 
 Top
Tsigyr
Отправлено: 16 Мая, 2013 - 21:29:34
Post Id


Гость


Покинул форум
Сообщений всего: 83
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




а может можно как-то при выводе самого скриншота изменить его размер с помощью php?
Я могу просканировать все скриншоты и уменьшить их, просто не хочеться портить оригинальные файлы..
 
 Top
LIME
Отправлено: 16 Мая, 2013 - 22:09:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Tsigyr пишет:
Я могу просканировать все скриншоты и уменьшить их
чтооо? Не понял
сделать для всех картинок превьюхи??
нет....это запрещено...строго настрого!!! Ниндзя
 
 Top
DelphinPRO
Отправлено: 16 Мая, 2013 - 22:41:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Tsigyr пишет:
просто не хочеться портить оригинальные файлы..

так и не трогайте. тем более этого не требуется. просто сделайте маленькие копии, сложите их где-нибудь, и перепишите часть кода, которая выводит картинки так, чтобы выводилсь маленькие картинки, а по клику (или как там у вас) показывалась большая.
Ну и процедуру загрузки изображений доработайте, чтобы для вновь добавляемых превью генерировались прямо при загрузке на сервер.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Tsigyr
Отправлено: 17 Мая, 2013 - 00:20:55
Post Id


Гость


Покинул форум
Сообщений всего: 83
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Вот моя структура хранения скринов:

Таблица:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `screen` (
  2.   `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `file_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
  4.   `name` varchar(13) NOT NULL DEFAULT '',
  5.   PRIMARY KEY  (`id`)
  6. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


где file_id - id файла которому принадлежит скриншот,
name - имя скриншота.

Сами картинки хранятся на сервере по папкам с id товара.

Сейчас у меня при выводе превьюшки берется самый первый скриншот к файлу который записан в базу.
Что можно придумать?

(Отредактировано автором: 17 Мая, 2013 - 00:25:43)

 
 Top
esterio
Отправлено: 17 Мая, 2013 - 00:31:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




сохранять name + '_min'
 
 Top
Tsigyr
Отправлено: 17 Мая, 2013 - 00:34:09
Post Id


Гость


Покинул форум
Сообщений всего: 83
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




не понял, что ты имеешь ввиду?)
 
 Top
Zuldek
Отправлено: 17 Мая, 2013 - 09:53:04
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Разумеется, как и указывали выше, - необходимы уменьшенные картинки в качестве превьюшек.
Их можете создавать либо при добавлении на сайт, либо при запросе страницы с ними.
Например при выводе картинкок в шаблоне вызывать метод
CODE (html):
скопировать код в буфер обмена
  1. '<img src="'.$image->GetImageResized($img_name) . '"/>'

Который проверит есть-ли уменьшенная копия и, если есть, отдаст ей, а если нет, - создаст а потом отдаст.
Класс для работы с изображениями, реализующий в т.ч. и этот метод уже выкладывал тут. Используйте поиск, либо берите любой другой аналогичный.

В качестве дополняющей или временно заменяющей меры вы можете использовать асинхронную загрузку изображений, чтобы сначала у вас подгрузилась вся страница, а уже потом скриншоты.

(Отредактировано автором: 17 Мая, 2013 - 09:54:07)

 
 Top
TroL
Отправлено: 17 Мая, 2013 - 11:08:35
Post Id


Гость


Покинул форум
Сообщений всего: 73
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




можно хранить превьюшки под таким же именем но в другой папке.
скрипт 1. сканируется все скрины создаются превюшки во вложенную папку (тут мы делаем превюшки для старых файлов)
скрипт 2. создавать превюшки по пронципу первого скрипта
скрипт 3. выводить не file/image.jpg а file/thumb/image.jpg например
 
 Top
Tsigyr
Отправлено: 17 Мая, 2013 - 12:51:34
Post Id


Гость


Покинул форум
Сообщений всего: 83
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




всем спасибо за ответы.

Вот моя форма загрузка скринов:
PHP:
скопировать код в буфер обмена
  1. <form action="add_screen.php?&id='.$id.'" method="post" enctype="multipart/form-data">
  2. Добавить фото:<br/>
  3. <input type="text" name="url[]" maxlength="300" value="" size="30"/><br/>
  4. <input type="text" name="url[]" maxlength="300" value="" size="30"/><br/>
  5. <input type="text" name="url[]" maxlength="300" value="" size="30"/><br/>
  6. <input type="text" name="url[]" maxlength="300" value="" size="30"/><br/></form>


PHP:
скопировать код в буфер обмена
  1. $id = intval($_GET['id']);
  2. $valid_types = array("gif","jpg", "png", "jpeg");
  3.  
  4. if(is_dir("sajt.ru/screen/".$id.""))
  5. {
  6. }
  7. else
  8. mkdir("sajt.ru/screen/".$id, 777);
  9.  
  10. $url=$_POST['url[]'];
  11. foreach($_POST['url'] as $url){
  12. if(!empty($url)){
  13. //открываем сеанс
  14. $curl = curl_init(''.$url.'');
  15.  
  16. //задаем параметры
  17. curl_setopt($curl, CURLOPT_USERAGENT, 'Boroda/2.0 J2ME/MIDP');
  18.  
  19. //открываем файловый дескриптор (куда сохранять файл)
  20. $ext = substr($url,
  21. 1 + strrpos($url, "."));
  22. $ext =strtolower($ext);
  23. if (!in_array($ext, $valid_types)) {
  24. echo 'Не верный формат картинок!';
  25. $name = uniqid();
  26. $fp =fopen('sajt.ru/screen/'.$id.'/'.$name.'.'.$ext.'','w+b');
  27.  
  28. //сохраняем файл
  29. curl_setopt($curl, CURLOPT_FILE, $fp);
  30. $mysqli->query("INSERT INTO `screen` SET `file_id`='$id', `name`='$name', `exp`='$ext' ;") or die(mysql_error());
  31.  
  32. //запускаем сеанс
  33. curl_exec($curl);
  34.  
  35. //закрываем сеанс
  36. curl_close($curl);
  37.  
  38. //закрываем дескриптор
  39. fclose($fp);
  40.  
  41. }
  42. }


можете помочь сделать чтобы создавалась в общей папке уменьшенная картинка самого первого изображения которое вписано в форме, только с названием '.$name.'_mini.'.$ext.'

(Отредактировано автором: 17 Мая, 2013 - 12:56:16)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB