Евгений О.
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 пусто.
Полной отладкой займусь завтра, если само не починится)
Владимир Коваль
65 сообщений
#12 лет назад
Может картинка просто обрезается по высоте?