Создание картинки на PHP
2989 сообщений
#12 лет назад

Есть несложный скрипт на PHP создающий gif-картинку графика при помощи библиотеки GD (version: bundled (2.0.34 compatible)). Периодически картинка создается не полностью (см. нижний график на рисунке, верхний правильный). В чем может быть причина?
6863 сообщения
#12 лет назад
Основываясь только на примерах, можно предположить, что ошибка таки в алоритме составления графика, а не в формировании изображений. Очень уж форма графиков разная. Вероятно, где-то происходит сбой с размерами или другое что-то.
2989 сообщений
#12 лет назад
Цитата ("floppox"):ошибка таки в алоритме составления графика, а не в формировании изображений
Не исключено, но вряд ли. Там несколько затычек как раз на случай ошибок. Расчет довольно длинный поэтому я и не привел код, но сама картинка строится примитивно: несколько строк текста по осям а остальное набор прямых линий. А главное то, что если хватит терпения давить F5, то в какой-то момент может и нормально картинка создаться, а строится из одних и тех же данных. Не может же скрипт через раз считать, вроде меня.) Плюс к этому сетка рисуется до вычислений, куда ж она тогда девается?
6863 сообщения
#12 лет назад
Цитата ("elosoft"):А главное то, что если хватит терпения давить F5, то в какой-то момент может и нормально картинка создаться, а строится из одних и тех же данных. Не может же скрипт через раз считать, вроде меня.
О... такое у меня вчера было, только не с картинкой. А через раз ругалось на якобы повторное определение функции.
А на другом сервере его испытать есть возможность?
2989 сообщений
#12 лет назад
Цитата ("floppox"):А на другом сервере его испытать есть возможность?
Да, есть. Там, правда, другая БД, но скрипт графика тот же. Работает нормально.
Цитата ("floppox"):
А через раз ругалось на якобы повторное определение функции.
Да у меня и не ругается. Собственно там все вычисления и рисование графика включены в try и при ошибке картинка просто удаляется и вместо нее выдается картинка с тестом ошибки. Так exception ни разу не сработал.
6863 сообщения
#12 лет назад
Все-таки, если ошибка не стабильна, это повод пенять на сервер, а не на скрипт.
2989 сообщений
#12 лет назад
У меня тоже подозрение на некорректную работу GD. Что-то типа ей в какой-то момент просто не хватает памяти, хотя ее и загрузить-то нечем при всем желании.
263 сообщения
#12 лет назад
Цитата ("elosoft"):Да, есть. Там, правда, другая БД, но скрипт графика тот же. Работает нормально.
Версии ОС, веб-сервера, PHP, PHP-GD совпадают? Имеет смысл обновиться до последних версий PHP и всех модулей.
Цитата ("elosoft"):
У меня тоже подозрение на некорректную работу GD.
Попробуйте установить где происходит ошибка: в GD или в Вашем коде, например, поставьте в скрипт заглушку, чтобы те же самые данные выводить в рабочий файл и не вызывать GD. Потом сделайте стресс-тест. Потом - для чистоты эксперимента - сделайте отдельную программку и обработайте сохраненные данные в GD.
В файле ошибок веб-сервера есть какие-либо сообщения? По характеру картинки можно предположить, что задача построения графика была завершена аварийно, обычно при этом в журнал сообщений об ошибках пишутся причины завершения.
2989 сообщений
#12 лет назад
Цитата ("Illarion_SA"):Версии ОС, веб-сервера, PHP, PHP-GD совпадают?
ОС, веб-сервер, PHP - разные, GD - одинаковые.
Цитата ("Illarion_SA"):
Имеет смысл обновиться до последних версий PHP и всех модулей.
Нет. Собираюсь менять хостинг как раз на тот, где работает.)
Цитата ("Illarion_SA"):
В файле ошибок веб-сервера есть какие-либо сообщения?
Нет, в error.log пусто.
Полной отладкой займусь завтра, если само не починится)