- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Может кто-нибудь сталкивался.
Есть PHP скрипт - формирует картинку (png) и выдает ее...
Картинка всегда одно и того же размера (ширина/высота), но в зависимости от переданных параметров содержит разные данные и как следствие может весить от 20Кб до 100Кб (больше не видел).
По сути это карта с масштабированием и наложением на нее разных объектов. Масштабирование не меняет ширину и высоту изображения, а меняет лишь кусок карты которые на изображении отображается.
В зависимости от передаваемых параметров и зума - меняется время генерации (на локалке правда дольше трех секунд не видел, на минимальном зуме (т.е. при максимальной карте))
Вызов картинки:
map.php?zoom=1&data=... - вся карта (3 сек. в локале)
map.php?zoom=10&data=... - 1/100 часть карты, (в локале -0 сек, с сервера 1-2 сек)
Проблема в том что если в локалке все работает, то с сервака не работает zoom=1, но работает zoom=10
Не работает в том смысле что браузер (FOX/Opera/IE) просто обрывает загрузки и не показывает изображение. Больше того - Fox предлагает "загрузить PHP файл". Эта проблема правда снялась modrewrit-ом - теперь вызов идет на map.png - но картинка все равно не показыватся на больших масштабах.
Посмотрел логи сервака - на проблемный вызов сервак откликается как HTTP/1.1 200 , т.е. все в порядке - должен сливать инфу.
Что это может быть?
А каким образом от zoom зависит размер картинки?
Есть конечно маловероятное предположение что в процессе буферизации вывода происходит imagedestroy(), и картинка кончается. Попробуйте её закомментить, все равно по окаончании выполнения убьется объект.
Можете еще попробовать передавать заголовок Content-Length чтобы явно сказать браузеру сколько байт надо получить.
А каким образом от zoom зависит размер картинки?
Допустим все карта (zoom=1) это 100х100 клеток в размере 500х500px, при zoom=10 это будет 10х10 клеток в размере 500х500px.
Есть конечно маловероятное предположение что в процессе буферизации вывода происходит imagedestroy(), и картинка кончается. Попробуйте её закомментить, все равно по окаончании выполнения убьется объект.
Думал об этом - убрал (хотя он и в конце) - не помогает. 🔥
Можете еще попробовать передавать заголовок Content-Length чтобы явно сказать браузеру сколько байт надо получить.
О таком тоже думал - но не знаю как посчитать это дело для случая объекта $im. А сохранять картинку в кэш не хочется.
т.е. с сервака не отдается слишком большая картинка. ясно.
Покажите пожалуйста все заголовки ответа (или урл дайте в пм)
malls а больше точно ни каких header не указанно нигде?
вот например скриптик но для работы не только с png
ощущение того, что отдаются еще какие то заголовки.
т.е. с сервака не отдается слишком большая картинка. ясно.
Покажите пожалуйста все заголовки ответа (или урл дайте в пм)
Это при ошибочном запросе:
Это при нормальном:
Transfer-Encoding:Chunked используется когда размер передаваемых данных неизвестен, можно попробовать его насильно прописать через header
А вообще дело таки видимо в конфигурации апача.
Я бы еще попробовал image_png обернуть в ob_start/ob_end_flush с гзиповским сжатием.
ненене уважаемые. png и так гзипованный :) тогда уж без гзипа ob_start/ob_end_flush
что за глупости. Во первых там не gzip а deflate-сжатие, во вторых смысл этого телодвижения не объем уменьшить, а изменить характер восприятия браузером данных
Transfer-Encoding:Chunked используется когда размер передаваемых данных неизвестен, можно попробовать его насильно прописать через header
А вообще дело таки видимо в конфигурации апача.
Я бы еще попробовал image_png обернуть в ob_start/ob_end_flush с гзиповским сжатием.
Transfer-Encoding уже пробовал - :) не помогает.
А вот на счет перехвата вывода - предлагаете поймать - сжать и выплюнуть обратно что получилось? Поймет ли бразер нас?
Да ему пофиг, у меня все картинки сжимаются gzip через htaccess, лишь бы он был у пхп. Попробуйте.
Если не поможет то придется ковыряться в конфиге апача/пхп, видимо там лимит памяти кончается или еще что-то подобное
да кстати а jpeg не пробовали?)) Может все дело в размере тупо?