2

所以我最近通过 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 中必须有一种方法来操作数据库表的值。有没有办法可以直接查询数据库并绕过 Magento 庞大的 API?

谢谢!

编辑:对于以后可能会发现的任何人。

我在绕过 Magento API 进行数据库调用方面取得了很好的成功。简单地直接查询数据库工作得更快。

但是,就我而言,我的表与其他表没有关联。Magento 中的许多表是相互关联的,如果您在一个表中更改某些内容,其他表中就会产生多米诺骨牌效应。因此,请务必格外小心。

4

1 回答 1

1

默认情况下,Magento 很慢,这是我认为 Magento 的主要问题之一。它缓慢而复杂。您可以使用(调用)这个:

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

并尝试制作一个自定义函数,但它不会比 Magento 本身快太多。您仍然使用 Magento 的类,但您可以开发自己的功能,但仍然需要一些不太容易获得的背景知识 - 文档很差。也许您可以从一些 magento 博客和在线提示开始。

你说它停止工作大约 30 秒。这通常是 PHP 停止执行的默认时间限制。所以也尝试在 PHP 文件的顶部使用 set_time_limit :

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 ...等。您可以不时删除它们。这是缓存文件,我注意到如果有大量缓存文件,magento 工作缓慢。如果您删除此缓存文件和目录,它会在一段时间内更好地工作。

于 2011-11-03T12:51:27.080 回答