Невозможно добавить товары в корзину Magento

Я собираюсь изложить это как можно проще, но при этом рассказать все соответствующие детали. Я перечислю детали сайта ниже:

http:///www.bubblegenius.com (главная страница в настоящее время заблокирована) Вы можете получить доступ к сайту внутри и посмотрите, что именно происходит, перейдя на http://www.bubblegenius.com/soap.html.

Мой клиент управлял интернет-магазином Magento на общем хосте. После успешного управления магазином в течение нескольких месяцев у нее начались проблемы с памятью. Сайт иногда переставал работать или выдавал «фатальные ошибки» при добавлении товаров в корзину.

При нажатии кнопки «Добавить в корзину» экран становился белым — пустым — без каких-либо предупреждений об ошибках. Когда я включил проверку ошибок в файле index.php и попытался добавить товар в корзину, я получил следующее:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 62914560 bytes) in /home/bubblege/public_html/app/code/core/Mage/Core/Model/Session/Abstract.php on line 234

Я пытался увеличить память php до 128M, 512M, даже 2048M внутри php.ini, .htaccess и даже установить ее в index.php с помощью

ini_set('memory_limi', '2048M');

Увеличение лимита памяти до 512 или выше не приводит к вышеупомянутой фатальной ошибке, но не позволяет добавить какой-либо элемент в корзину. Выдает следующее сообщение:

"The item cannot be added to the cart."

А теперь самое интересное: мы перенесли моего клиента на VPS с гарантированным объемом памяти 768 МБ (с 1,5 ГБ оперативной памяти), и я активно работал с серверными техниками над оптимизацией сервера.

Однако с момента перехода на VPS ошибки продолжаются. Сайт работает нормально, пока вы не попытаетесь добавить товар в корзину.

Я искал каждую доску объявлений magento в поисках решения этой ошибки. Я отключил все расширения и даже пытался установить из новой версии Magento и из предыдущей версии.

Я ремонтировал базу данных, оптимизировал ее, сравнивал и исправлял с чистой базой данных, работающей на чистой версии Magento.

На данный момент я уполномочен предложить до двухсот долларов, чтобы найти кого-то, кто сможет решить эту проблему раз и навсегда. Если у вас есть идеи и ответы на этот вопрос, и вы думаете, что можете это исправить, свяжитесь со мной здесь или напрямую. Я могу предоставить информацию о доступе к серверу и обсудить с вами любые вопросы и возможные решения.

Кроме того, мой опыт не совсем ориентирован на администрирование серверов, но я знаю, как обращаться с коробкой, и я работаю с Magento уже несколько лет. Несколько других моих клиентов работают с сайтами без проблем.


person f8xmulder    schedule 04.08.2010    source источник
comment
Я ненавижу указывать на это, потому что вы, вероятно, уже проверили это, но установили ли вы также ограничения памяти в файле php5.ini? Вы используете WHM на VPS? Это также может перевесить это.   -  person Nic    schedule 04.08.2010
comment
Я запускаю WHM, но, как уже упоминалось, специально обновил все настройки для php, apache и mysql, чтобы они работали на пике. Да, php5.ini тоже установлен.   -  person f8xmulder    schedule 04.08.2010


Ответы (2)


Пробовали ли вы запускать тот же код и базу данных на локальном компьютере? Это хорошее начало. Если проблема не устранена, значит проблема в среде. Если проблема не устранена, попробуйте запустить ту же базу данных со свежей копией Magento (в основном код прямо из репозитория). Если проблема исчезнет, ​​возможно, у вас проблема с кодом. Если нет, скорее всего, виновата база данных.

Затем добавьте новый тип продукта и новый продукт. Попробуйте добавить их в корзину. Использовать нового клиента и т. д.

Последующая отладка зависит от обнаруженных вами проблем, но где-то в логике Magento вас сбивают с толку. Я предполагаю, что это база данных, поскольку Magento правильно зависит от нескольких вещей, существующих в базе данных. Пошаговое выполнение кода с помощью отладчика может показать вам, где он выходит из процесса.

Дайте нам знать, как это происходит. :)

person Joseph Mastey    schedule 04.08.2010
comment
Спасибо за отзыв. Я провел множество различных тестов, в том числе те, которые вы упомянули. Я провел A / B-тестирование с новыми базами данных, старыми базами данных, новыми продуктами, новыми клиентами. Проблема, похоже, в базе данных. Я не пробовал пошаговое кодирование - есть ли у вас какие-либо предложения о том, как это сделать? У меня есть Firebug, и он ничего не показывает. Есть ли что-нибудь надежное, что может пройти через Magento? - person f8xmulder; 04.08.2010
comment
xdebug будет лучшим вариантом, но если это не удастся, начните добавлять операторы отладки в код. изолируйте, какая строка кода устанавливает сообщение о невозможности добавить в корзину, и используйте debug_print_backtrace(), чтобы узнать немного больше о том, что происходит. что может привести вас в нужное место. - person Joseph Mastey; 04.08.2010
comment
Пока мы говорим, я устанавливаю xdebug. Я попробую и посмотрю, что он найдет. Спасибо за идею. - person f8xmulder; 04.08.2010
comment
Что ж, установил xdebug, убедился, что он работает правильно (так и было), а затем воспроизвел шаги, чтобы получить ошибку. Ничего такого. Никакой ошибки, просто пустой белый экран. Пробовал настраивать память, тоже самое. - person f8xmulder; 05.08.2010
comment
Вы действительно прошли через код? Прохождение стека вызовов Magento может быть утомительным, но, пройдя вручную (с несколькими интеллектуальными точками останова), вы можете увидеть, что вызывает большую проблему с памятью. - person Joseph Mastey; 05.08.2010
comment
А, оказывается, мне нужно скомпилировать xdebug для Zend, взять несколько скриптов vim, установить расширение для firefox, так что, как только я со всем этим разберусь, я дам вам знать, что найду. Я смог увидеть некоторые выходные данные xdebug, находясь в магазине, поэтому я подумал, что настроил его правильно. Я никогда не использовал xdebug, поэтому я пытаюсь его изучить... - person f8xmulder; 05.08.2010
comment
Да, это проблема, если вы не знакомы с надлежащим отладчиком. В крайнем случае вы можете использовать var_dump и др., чтобы сделать то же самое. - person Joseph Mastey; 05.08.2010

Я тоже только что столкнулся с этой проблемой. Решение состояло в том, чтобы отключить безопасный режим PHP. Это немедленно исправило проблему для меня.

person Matt Mombrea    schedule 15.06.2012