Magento API работает слишком медленно?

Итак, я недавно выполнил несколько запросов к базе данных через вызовы 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?

Спасибо!

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

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

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


person Nathaniel Wendt    schedule 17.08.2011    source источник
comment
Это база данных mysql, и я пытаюсь получить доступ к таблице catalogsearch_fulltext.   -  person Nathaniel Wendt    schedule 18.08.2011
comment
В моем варианте вы должны проверить, что делают основная модель и контроллер magento. Поскольку база данных magento использует схему EAV, несколько таблиц смешиваются вместе, поэтому делать простой запрос к одной таблице не рекомендуется.   -  person Michael Bai    schedule 18.08.2011
comment
да обычно так и есть. Но в моем случае я просто манипулирую одной таблицей. Это одна из немногих таблиц, которая не подключена через схему EAV... поэтому могу ли я просто создать прямое подключение, как обычно, и запросить таблицу?   -  person Nathaniel Wendt    schedule 18.08.2011


Ответы (1)


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 работает медленно. Если вы удалите эти файлы и каталоги кеша, на какое-то время он будет работать лучше.

person StudioArena    schedule 03.11.2011