Как вывести большое изображение в браузер с помощью PHP? - PullRequest
0 голосов
/ 29 марта 2011

У меня очень большое изображение, сгенерированное на лету с помощью PHP и выведенное в браузер. (его ширина составляет 5000 пикселей, а высота - 1000-2000 пикселей. Это график ежедневной активности пользователей на моем сайте).

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

Есть ли способ вывести это большое изображение из нескольких частей, используя GD в формате PNG?

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

EDIT1: это скрипт администратора. Никто не видит это, кроме меня.

EDIT2: и пример изображения можно увидеть здесь: http://users.atw.hu/calmarius/trash/wtfb2/x.png (У меня также есть возможность группировать треки по IP-адресу.)

Каждая пара пользователь + IP имеет свой собственный 24-часовой трек на графике. И каждый зеленый знак обозначает активность пользователя. Как видите, это изображение можно выводить трек за треком. И нет необходимости выводить и генерировать все это сразу.

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

Я использую PHP-скрипт, потому что мне лень экспортировать журнал запросов из базы данных, загружать его и передавать данные в программу, которая создаст для меня график. ;)

Ответы [ 2 ]

2 голосов
/ 29 марта 2011

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

ini_set('memory_limit', '-1');
0 голосов
/ 29 марта 2011

Было бы полезно сказать, как вы генерируете изображение (библиотека GD, ImageMagick) и как вы выводите его. Вы сохраняете файл в каталог, а затем используете readfile () для его вывода? Если да, комбинация fopen / fread / echo примерно на 50-60% быстрее, чем использование readfile () для вывода файлов в браузер. Вы используете сжатие GZIP? Какой срок выполнения php? Какое точное сообщение об ошибке вы получаете?

...