ошибка

#
ошибка
сайт http://santehsklad.ru/

При обращении к сайту периодически возникает ошибка

PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 1138871 bytes) in /home/t/timespbru/santehsklad/public_html/modules/Structure/Structure.class.php on line 2568

или

PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 375813 bytes) in /home/t/timespbru/santehsklad/public_html/modules/Structure/Structure.class.php on line 2198

Скажите, пожалуйста, с чем это может быть связано (доступной памяти 64M  - вроде должно быть достаточно) и как это можно победить.
Спасибо.
#
Re: ошибка
elemir писал(а):
доступной памяти 64M  - вроде должно быть достаточно

В данном случае, очевидно же, недостаточно

elemir писал(а):
и как это можно победить
Увеличить размер выделяемой оперативной памяти, или упростить ту задачу, которая требует столько памяти. Например, отключить вывод в XML всей лишней информации, уменьшить размер выборки данных из БД, и тому подобные вещи по оптимизации вашей интеграции.
Заказов не беру. Консультирую редко.
#
Re: ошибка
Отладочная информация говорит, что памяти хватает... Но почему-то  не всегда )
Вот страницы такого типа иногда открываются нормально, а иногда возникает указанная выше ошибка.

http://santehsklad.ru/shop/radiatory/aljuminievye/sira-heatline/item_1190/
http://santehsklad.ru/shop/radiatory/stalnye-trubchatye/irsap-tesi/radiator-tesi-2056508/

Отладочная информация
Время выполнения: 1.199 с, из них

    время загрузки модулей: 0.164 с;
    время генерации содержания страницы: 1.146 с;
    время соединения с СУБД: 0.002 с;
    время выбора БД: 0.000 с;
    время выполнения запросов: 0.057 с;
    время обработки XML: 0.118 с.

Использовано памяти: 48.30 Мб
Количество запросов: 154.
Компрессия: Отключено.
Кэширование: Отключено.

Почему памяти хватает не всегда и что и куда здесь можно оптимизировать?
Спасибо!
#
Re: ошибка
elemir писал(а):
Отладочная информация говорит, что памяти хватает... Но почему-то  не всегда )

elemir, вы такой забавный аргумент привели
Когда у вас _есть_ отладочная информация, то памяти вам, разумеется, хватает.
А когда памяти вам не хватает, у вас и нет отладочной информации, потому что скрипт падает с ошибкой раньше, чем дело доходит до вывода этой самой информации.

А теперь почитайте внимательно текст ошибки
elemir писал(а):
PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 1138871 bytes)
а потом возьмите калькулятор, и разделите 67108864 на 1024 (из байт в килобайты) и еще раз на 1024 (из килобайт в мегабайты), и вы получите цифру в 64 мегабайта.
А потом возьмите гугл транслейт, и переведите всю фразу на русский.
И осознайте, php пишет вам, что "разрешенный объем памяти в 64 мегабайта израсходован (во время попытки получить еще 1,09 мегабайта)".

Тут еще важно понимать, что увеличение памяти на 1 мегабайт вас не спасет, весьма вероятно, что скрипту требуется еще больше. Задайте, например, 96 метров, и убедившись что страница не падает, посмотрите на расход памяти в отладочной информации. Держу пари, вы будете удивлены
Заказов не беру. Консультирую редко.
#
Re: ошибка
Kotoff,
Спасибо за ответ.
Я понимаю что  67108864 - это и есть 64 мегабайта. На это моих скромных познаний хватает )
И смысл ошибки мне тоже понятен. Удивляет почему на одной и той же странице этих 64 мегабайтов то хватает - то нет.

И что делать - тоже не понятно... Необходимо как-то от этой ошибки избавиться.

#
Re: ошибка
elemir, так я же выше написал.

У вас там есть верхнее меню на основе структуры, левое меню (на основе магазина и тогда оно скорее всего в виде отдельного вызова ShowShop() или на основе структуры), хлебные крошки (весьма возможно, что тоже на основе структуры), и собственно страница магазина.
Смотрите, для какого из этих блоков генерируется неадекватно большой XML и сокращайте его размер, api вам в помощь http://www.hostcms.ru/api/classtrees_HostCMS_5.html
Заказов не беру. Консультирую редко.
Авторизация