Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: IMG SRC и PHP ImageJpeg() - где ошибка?
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Добрый день всем!
У меня есть файл preview.php, который уменьшает, обрезает и выводит изображения. Путь к изображению передается через параметр src ($_GET['src']). Вот сам файл preview.php:
На локальном сервере все работает, а в интернете выводятся почему-то пару фоток из 30-ти. Где у меня ошибка? Что поправить или дописать?
Подскажите пожалуйста. Заранее очень благодарен.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
phpfaq.ru/debug
А именно - запрашивайте этот скрипт напрямую браузером с хостинга, вероятно, скрипт падает.
во-вторых - генерирование изображения очень дорогая операция, кэшируйте их хотя бы.
----- PostgreSQL DBA
morph-x
Отправлено: 30 Июня, 2011 - 19:15:28
Гость
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Мелкий пишет:
phpfaq.ru/debug
А именно - запрашивайте этот скрипт напрямую браузером с хостинга, вероятно, скрипт падает.
Попробовал. Напрямую все отлично работает. А на странице все фотки не отображает, только малую часть :'( . Возможно ли это из-за того, что скрипт не успевает обрабатывать? Если да, то подскажите пожалуйста как исправить. http://impuls-c[dot]h19[dot]ru/index.php[dot][dot][dot]age=shody-priami - вот страница на которой можно посмотреть, как все это дело выглядит. Непонятные глюки. Обновите пару раз и поймете. Не все фотки грузятся (а их там около 40!). А на локальном сервере все отлично.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Цитата:
GET /resize.php?src=files/photos/shody-priami/04.jpg HTTP/1.1
Host: impuls-c.h19.ru
Цитата:
<b>Fatal error</b>: Out of memory (allocated 7602176) (tried to allocate 8192 bytes) in <b>/home/i/impuls-c.h19.ru/WWW/resize.php</b> on line <b>4</b><br />
На мой взгляд, в комментариях не нуждается.
----- PostgreSQL DBA
morph-x
Отправлено: 30 Июня, 2011 - 19:52:18
Гость
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Только что соединился с сайтом (по FTP) и нашел там файл error_log.txt. В основном там были ошибки типа:
Цитата:
[30-Jun-2011 17:16:23] PHP Fatal error: Out of memory (allocated 7602176) (tried to allocate 8192 bytes) in /home/i/impuls-c.h19.ru/WWW/prev iew.php on line 5
Я так понимаю что я превысил лимит памаяти в файле preview.php на строке 5.
Вот она:
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Уменьшить размер оригинального файла ручками или перезжать к другому хостеру, не с такими строгими лимитами по памяти.
Для GD лимит в 8мб памяти - это ни о чём.
----- PostgreSQL DBA
Slavenin
Отправлено: 30 Июня, 2011 - 19:58:49
Посетитель
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
так как каждому скипту отводится на выполнение определенное количество памяти, то, возможно, стоит попробовать вызывать этот скрипт для каждой отдельной фотографии. как сделать в php сразу в голову не приходит, а ajax`ом просто вызывайте скрипт для каждой отдельно фотографии. как вариант хранить несколько разных вариантов одного и того же изображения, изменяя размеры при загрузке, один файл оригинальный в одн папку, уменьшенный в другую
Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011
Помог: 1 раз(а)
[+][+][+]
morph-x меняй хостинг.
Мелкий
Отправлено: 30 Июня, 2011 - 20:04:36
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Slavenin пишет:
так как каждому скипту отводится на выполнение определенное количество памяти, то, возможно, стоит попробовать вызывать этот скрипт для каждой отдельной фотографии.
Что сейчас и происходит. 1 превьюшка - 1 запуск скрипта. Отстаньте от аякса и изучите http.
----- PostgreSQL DBA
morph-x
Отправлено: 30 Июня, 2011 - 20:09:24
Гость
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Мелкий пишет:
Уменьшить размер оригинального файла ручками или перезжать к другому хостеру, не с такими строгими лимитами по памяти.
Для GD лимит в 8мб памяти - это ни о чём.
Понятно. Большое спасибо! Этот хостинг я выбрал только для тестирования, а по окончанию закину его на хостинг с PHP memory_limit = 128МБ. В Денвер вроде такой же. Еще раз большое спасибо!
Slavenin
Отправлено: 30 Июня, 2011 - 20:17:53
Посетитель
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
Мелкий пишет:
Что сейчас и происходит. 1 превьюшка - 1 запуск скрипта. Отстаньте от аякса и изучите http.
нет, вызывать скрипт разными запросами, чтобы было, что скрипт отрабатывает только от одной фотографии.
PS от аякса не отстану, так как его нужно изучать...
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Получается что сейчас у меня при открытии страницы обрабатываются сразу все фотографии, и из-за этого превышается лимит? Если можете, пожалуйста подскажите как мне сделать чтоб за раз обрабатывалась только одна фотография.
Мелкий
Отправлено: 30 Июня, 2011 - 21:01:49
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Slavenin пишет:
PS от аякса не отстану, так как его нужно изучать...
А чего там изучать? дюжина строк из которых меняется только пара.
Slavenin, morph-x, каждый тэг img, равно как и подключение css, js, а так же чего-либо посредством последних двух, инициирует запрос к сайту. Каждый - по 1 запросу. Протокол HTTP потому что. 1 запрос - 1 объект. 1 объект - 1 экземпляр скрипта. Каждый экземпляр скрипта имеет свои лимиты. Свои, а не одни на все запущенные.
----- PostgreSQL DBA
morph-x
Отправлено: 30 Июня, 2011 - 22:17:36
Гость
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Но у меня нет на сайте ни одной фотографии больше 8мб. Максимальный размер фотки у меня это 1.2мб. Значит ни одна фотка не превысила лимит. Почему же у меня ошибка и превышение лимита?
Мелкий
Отправлено: 30 Июня, 2011 - 22:35:05
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Это в сжатом виде 1,2мб. Не BMP же храните? А для операций над изображением, его необходимо раскодировать, и весить при том оно начинает не один мегабайт, а, собственно высота*ширина*32 бита для truecolor палитры (ну может меньше, GD я не писал, не знаю какие там оптимизации по памяти) + память на жизнедеятельность PHP + аналогично память на саму превьюшку.
И всё то ещё под соусом неплохой загрузки CPU.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.