Добрый день, подскажите, пожалуйста, в чем может быть проблема. Вывожу картинки на экран используя код(Resample.php): Код (Text): $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); // Output imagejpeg($image_p, null, 100); Этот код вызывается: Код (Text): echo "<div class=\"prod\" style=\"width: $width px\">" . "<img src=\"Resample.php?file=$img&y=$max_y\" border=\"0\" class=\"small_prod\" height=$max_y width=$width/>" . "</div>\n"; Раньше вроде все работало и проблем не было, но сейчас у некоторых клиентов не все картинки стали отображаться, причем после каждого F5 выводятся разные, скрин прикладываю ниже.
поправь меня если что. ты при генерации страницы каждый раз создаешь уменьшенную версию каждой картинки? 50 картинок == 50 ресамплингов. ты блин не очень мудрый человек. надеюсь ты пошутил про клиентов? ошибка происходит СКОРЕЕ ВСЕГО от того, что исчерпан time limit (обычно 30 сек). азбука: браузер получив html-текст страницы, шлет на сервер запросы на используемые на ней файлы: стили, скрипты, картинки. по умолчанию он пытается одновременно с одного домена качать до 8 файлов или около того (величина настраиваемая). обычно статические файлы хорошо кешируются, но твой скрипт Resample точно НЕ кешируется, всякий раз идет новый запрос. то есть у тебя на сервере на одного чертова посетителя образуется очередь из 8 долгоиграющих процессороёмких запросов. некоторые из них обламываются по таймауту, т.к. этот физический сервер тащит еще 200 долоёбов кроме твоих клиентов. очень вероятно, что клиентов скоро забанит хостинг-провайдер. достаточно 10 раз обновить страницу и капец. критическая нагрузка. совет: сохраняй результат ресамплинга в отдельные файлы. функция уменьшения должна срабатывать строго один раз на каждый исходный файл. потом используй готовый результат.
Когда у функции imagejpeg указан параметр filename, она не выводит его в выходной поток как у тебя сейчас, а сохраняет в виде файла. Твоя задача завести правило куда должны сохраняться превьюшки, дать права на запись в этот каталог и в скрипте Resample.php сначала проверять "есть ли уже превьюшка для этой картинки?" если нет — создавать превьюшку, затем делать редирект на готовый файл. Если файл уже есть, сразу делать редирект на готовый файл. Apache справляется с отдачей файла очень хорошо, не надо делать это за него в скрипте. Код (PHP): header('Location: адрес_картинки'); die(); Типа того.