所以我最近通过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中的许多表是相互关联的,如果您在一个表中更改某些内容,则其他表中将存在多米诺骨牌效应。因此,请务必小心谨慎。
答案 0 :(得分: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 ......等。 您可以不时删除它们。这是CACHE文件,我注意到如果有很多CACHE文件magento工作缓慢。如果删除此缓存文件和目录,它会在一段时间内更好地工作。