| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Графика > Долгое выполнение функции |
| Автор: Blaga 10.6.2008, 12:49 | ||||
| Доброго времени суток, уважаемые форумчане! Столкнулся с такой вот проблемой. У меня есть сайт с обоями для рабочего стола, и там в админке есть скрипт для добавления картинок в БД. Так вот там когда добавляеться картинка, создаеться превью для нее. Превью создаю с помощью вот такой вот функции.
Так вот недавно сделал массовый загрузчик обоин. И теперь эта функция стала медленно работать. (Скорее всего она и раньше долго работала просто я не замечал А то например она тока одну картинку чуть меньше 30 сек масштабирует Для полноты картины кусок скрипта где я ее использую.
Заранее спасибо(+) Всем ответившим, по сабжу. |
| Автор: MoLeX 10.6.2008, 13:01 |
сабж Blaga, что бы понять какое именно место тормозить раставь через ф-цию время выполнения скрипта и погляди. |
| Автор: krundetz 10.6.2008, 13:03 |
| MoLeX а может не городить агород и использовать профайлер |
| Автор: MoLeX 10.6.2008, 13:05 |
| krundetz, да хоть чем) лишь бы понять какое место в скрипте вызывает нагрузку |
| Автор: Blaga 10.6.2008, 13:47 |
| krundetz, я не знаю что это такое... MoLeX, всмысле функция microtime()? Сейчас попробую... |
| Автор: MoLeX 10.6.2008, 13:49 |
| Blaga, да, главное вычисли разницу потом |
| Автор: Blaga 10.6.2008, 14:03 | ||||
получаеться так написал вот такой код
с тремя картинками выдало вот такой результат 1 >> : 0.85 c 1 >> : 0.84 c 1 >> : 1.04 c а потом написал вот так
вот что вывело 2 >> Resource id #14: 0.00 c 3 >> Resource id #16: 0.09 c 4 >> 1: 0.97 c 5 >> 1: 0.00 c 1 >> : 1.07 c 2 >> Resource id #23: 0.00 c 3 >> Resource id #25: 0.10 c 4 >> 1: 0.77 c 5 >> 1: 0.00 c 1 >> : 0.88 c 2 >> Resource id #32: 0.00 c 3 >> Resource id #34: 0.09 c 4 >> 1: 0.77 c 5 >> 1: 0.01 c 1 >> : 0.87 c Я прошу прощения за такое неудобное представление. Насколько я понял тут дольше всех выполняються эти функции 1 >> : 1.07 c 4 >> 1: 0.97 c под цифрой 1 это у меня сама вся функция resize() а под цифрой два функция imagecopyResampled() наверное все дело в ней.... |
| Автор: Feldmarschall 10.6.2008, 14:05 |
| 30 секунд и 1 секунда - разница в 30 раз. так сколько времени у тебя выполняется эта команда? |
| Автор: Blaga 10.6.2008, 14:05 |
| Собственно что делать то теперь? Добавлено через 1 минуту и 54 секунды Feldmarschall, весь скрипт с 3 картинками сейчас около полторы минуты. Я сделал вывод что это функция тормозит потому что у меня раньше в php.ini стояло значение на максим. выполнение скрипта 30 сек. я увеличил до 200 и вот теперь пока работает по 3 -4 штуки. Добавлено через 9 минут и 42 секунды собственно попробовал грузануть около 40 картинок за 200 сек грузануло тока 5 штук. Вылезла ошибка Fatal error: Maximum execution time of 200 seconds exceeded in Z:\home\dis.lo\www\gamma\ad\add_robot.php on line 51 на 51 строке 51 $t=microtime(true); 52 $resii=resize("../".$category."/img/displayart_ru_".$name_image."",$name_image,$category); 53 printf(" 1 >> $resii: %.2f c <br />", microtime(true)-$t); |
| Автор: Blaga 10.6.2008, 14:28 |
| эм собственно для интереса измерил время функции copy() собственно она то и копирует по 30 сек. и тут возникает вопрос. но вначале обрисую ситуацию. картинки беруться с другого сервака и тащаться сейчас мне на комп. получаеться они качаються сколько то там... а канал у меня узкий 128кбит так вот это наверное изза канала так плохо да? сосбственно на серваке такого быть не должно? |
| Автор: Blaga 10.6.2008, 15:23 |
| MoLeX, собственно на серваке за 2 минуты управились 23 картинки. А это все какие были. Так что все хорошо. |