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]   

> Без описания
NWH
Отправлено: 27 Мая, 2012 - 01:53:17
Post Id


Новичок


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


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




Hi All!

Задача:

Необходимо реализовать сервис формbрования динамических картинок с помощью php.

Например по запросу http://mysite[dot]ru/image.php?text=mytext будет сформирована картинка с текстом mytext. Проблем нет.

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

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

Для примера приведу похожий сервис http://www[dot]forkosh[dot]com/mimetex[dot]html
Там то же самое. Скрипту передается какой-то текст и на основании этого текста формируется картинка.

Я данный сервис тестировал таким же методом: делал страницу с сотней динамических картинок - и все грузились! И данный сервис обслуживает огромное число запросов! И все работает (у них)!

Такое ощущение, что браузеру надо сказать:"потерпи малек, щас все картинки придут" Радость

Подведем итог. Как-то проблему решить можно. Но не понятно в каком направлении копать.

В догонку. Делал эксперимент. Скрипт формирует кучу статических изображений, сохраняет их на диск, формирует страницу с ссылками на статические картинки и отдает страницу клиенту. Все работает! Все картинки (100 шт) грузятся! Даже на медленном gprs соединении. Ждешь пока загрузятся и готово, и главное все на месте, ни одна не пропала!

PS
В инет комп выходит через роутер со службой Virtual Server, а сам WEB-сервер крутится на виртуальной машине с сетевым мостом.

(Отредактировано автором: 29 Мая, 2012 - 20:39:27)

 
 Top
kat69
Отправлено: 28 Мая, 2012 - 20:45:28
Post Id


Новичок


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


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




Как вариант, уменьшит нагрузку на сервер

CODE (php):
скопировать код в буфер обмена
  1. $uploadDir = "img";  //папка хранения сформированных изображений
  2. $uploadDir = $_SERVER['DOCUMENT_ROOT'] . "/" . $uploadDir . "/";
  3. //проверяем или был такой запрос раньше
  4. if (is_file($uploadDir . md5($_REQUEST['text']) . ".png")) {
  5.     header('Content-Type: image/png');
  6.     echo  file_get_contents($uploadDir . md5($_REQUEST['text']) . ".png");
  7. } else {
  8.     //если нет, делаем новое.
  9.     $im = @imagecreatetruecolor(120, 20)
  10.         or die('Невозможно инициализировать GD поток');
  11.     $text_color = imagecolorallocate($im, 233, 14, 91);
  12.     imagestring($im, 1, 5, 5, $_REQUEST['text'], $text_color);
  13.     // Выводим в браузер
  14.     header('Content-Type: image/png');
  15.     imagepng($im);
  16.     //Cохраням в папку
  17.     imagepng($im,$uploadDir . md5($_REQUEST['text']) . ".png");
  18.     imagedestroy($im);
  19. }

(Отредактировано автором: 30 Мая, 2012 - 14:33:38)

 
 Top
NWH
Отправлено: 29 Мая, 2012 - 20:38:53
Post Id


Новичок


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


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




kat69 пишет:
Как вариант, уменьшит нагрузку на сервер


В принципе это и понятно. Но я говорю о случае, когда клиенту отдали страницу с большим количеством динамических картинок и браузер клиента эти картинки начинает просить у сервера. А их же еще надо и сформировать. Тут как ни крути все равно получается "импульсная нагрузка" на сервер.

Мне хочется понять, почему статические картинки сервер отдает без проблем (возможно потому, что здесь не участвует интерпретатор PHP Хм ), а с отдачей динамических картинок есть затруднения... Есть еще подозрения, что большая цепочка всяких роутеров, "обратных проксей" и прочих устройств коммутации запросов как-то ухудшает ситуацию (при большем числе всяких коммутаторов - формируется меньшее количество динамических картинок). Но на отдачу статических картинок это никак не влияет... Растерялся

Вот и хочется разобраться.
 
 Top
Medallion
Отправлено: 29 Мая, 2012 - 20:56:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




Я если сформировать одно большое php-изображение, состоящее из маленьких с текстом и синхронно сгенерировать css-файл в котором будет позиционирование на эти все элементы. Загрузиться то одно изображение, в котором и можно выбирать потом нужные элементы с помощью CSS.
Реализация сложна, или выполнима ли она я незнаю.
Вообщем, я подал идею Закатив глазки
 
 Top
DlTA
Отправлено: 29 Мая, 2012 - 21:15:54
Post Id



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


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


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




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

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

выход делать кеширование.
 
 Top
kat69
Отправлено: 30 Мая, 2012 - 14:43:04
Post Id


Новичок


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


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




Если нет возможности увеличить мощность сервера, смотрите в сторону AJAX и динамически подгружайте картинки.
 
 Top
Serge78rus
Отправлено: 15 Апреля, 2014 - 12:21:59
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Апр. 2014  
Откуда: Санкт-Петербург


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




Если Вам, как Вы пишете, необходимо поменять только текст на картинке, то может быть стоит посмотреть в сторону SVG?. Как динамически менять атрибуты элементов SVG можно посмотреть в статье Как оживить SVG
 
 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