Magento API работает слишком медленно? - PullRequest
2 голосов
/ 18 августа 2011

Итак, я недавно выполнил несколько запросов к базе данных через вызовы Magento API, такие как

$connection = Mage::getSingleton('core/resource')->getConnection('core_write');
$readresult = $connection_write->query("SELECT data_index FROM catalogsearch_fulltext WHERE MATCH(data_index) AGAINST ('anji') AND store_id = '1'");
$row = $readresult->fetch();

Однако, очевидно, это приводит к сбою всего сервера после циклического прохождения около 30 записей, манипулирования ими и записивернуться к записям.

Должен быть способ манипулировать значениями таблиц базы данных в Magento.Есть ли способ, которым я могу направить запрос к базе данных и обойти весь громоздкий API Magento?

Спасибо!

РЕДАКТИРОВАТЬ: Для тех, кто может найти это позже.

Я имелХороший успех с обходом Magento API для вызовов базы данных.Простой запрос к базе данных работал намного быстрее.

Однако в моем случае моя таблица не была взаимосвязана с другими таблицами.Многие таблицы в Magento взаимосвязаны, и если вы что-то измените в одной таблице, в других таблицах будет эффект домино.ТАК ТОЛЬКО СДЕЛАЙТЕ ЭТО С ОЧЕНЬ ВНИМАНИЕМ.

1 Ответ

1 голос
/ 03 ноября 2011

По умолчанию, Magento МЕДЛЕННЫЙ, это одна из главных проблем Magento.Это медленно и сложно.Вы можете использовать (вызвать) это:

require_once '{ROOT_DIR}/app/Mage.php';
Mage::app('default');

и попытаться создать пользовательскую функцию, но она не будет намного быстрее, чем сам Magento.Вы по-прежнему используете классы Magento, но вы можете разработать свою собственную функцию, но все же вам нужны некоторые базовые знания, которые не так просто получить - документация оставляет желать лучшего.Может быть, вы можете начать с некоторых блогов magento и советов в Интернете.

Вы сказали, что оно перестало работать примерно через 30 секунд.Это обычно ограничение по умолчанию для PHP, чтобы остановить выполнение.Также попробуйте использовать set_time_limit вверху вашего PHP-файла:

set_time_limit(0); //for unlimited time limit or
set_time_limit(120); //for 120 seconds time limit for example

Также подключитесь по FTP и найдите (обычно) этот каталог:

{root}/var/cache/

Там должно быть несколько подкаталогов, таких как: mage - 0, mage - 1, mage - 2 ... и т. д. Вы можете время от времени удалять их.Это файлы CACHE, и я заметил, что при наличии большого количества файлов CACHE magento работает медленно.Если вы удалите этот кеш-файлы и каталоги, он будет работать лучше в течение некоторого времени.

...