我最近更新到magento 1.9但发现我的类别非常慢。我无法找到问题所以猜测这与magento 1.9有关,并决定降级为magento 1.8。一切都工作正常,但过了一段时间后,magento再次变慢了。由于其他一些错误,我做了一些更改,因为我略微更改了/etc/local.xml。显然,我再次解开它,尽管它本来不应该是原因。不幸的是,这并没有解决我的问题。
我当前的local.xml:
<cache>
<backend>Cm_Cache_Backend_File</backend>
<prefix>SH24_</prefix>
</cache>
Cm Cache Backend绝对有效。使用标准缓存时结果相同。
我打开了探查器,在不同的开发页面上,文件的传递方式看起来完全不同。 http://i.imgur.com/fnLRheX.png (慢页)
这是在另一个测试开发网站上的样子: http://i.imgur.com/5lwHxH2.png (快速页面)
生成差异是6秒。
正如您所知,在慢速站点中,所有内容都嵌套在layout / db_updates下,但在慢速站点上,它不是。
最耗时的电话是
CONFIGURABLE:Mage_Catalog_Model_Product_Type_Configurable::getConfigurableAttributes
在快速网站上没有调用。相反,它只是:
__EAV_LOAD_MODEL__
出现var / cache文件。错误日志不记录任何内容。
有谁知道,我怎么解决这个问题? 非常感谢你!
编辑: 到目前为止我发现了什么。 /Mage/Core/Model/Layout/update.php
public function fetchDbLayoutUpdates($handle)
{
$_profilerKey = 'layout/db_update: '.$handle;
Varien_Profiler::start($_profilerKey);
Mage::log($_profilerKey, null, 'mylogfile.log');
$updateStr = $this->_getUpdateString($handle);
if (!$updateStr) {
return false;
}
$updateStr = '<update_xml>' . $updateStr . '</update_xml>';
$updateStr = str_replace($this->_subst['from'], $this->_subst['to'], $updateStr);
$updateXml = simplexml_load_string($updateStr, $this->getElementClass());
$this->fetchRecursiveUpdates($updateXml);
$this->addUpdate($updateXml->innerXml());
Varien_Profiler::stop($_profilerKey);
return true;
}
正如预期的那样,$updateStr
为空,并且调用返回。
所以我仔细研究了$this->_getUpdateString($handle)
:
return Mage::getResourceModel('core/layout')->fetchUpdatesByHandle($handle);
我在fetchUpdatesByHandle($handle);
中找到了/Mage/Core/Model/Resource/Layout.php
:
public function fetchUpdatesByHandle($handle, $params = array())
{
$bind = array(
'store_id' => Mage::app()->getStore()->getId(),
'area' => Mage::getSingleton('core/design_package')->getArea(),
'package' => Mage::getSingleton('core/design_package')->getPackageName(),
'theme' => Mage::getSingleton('core/design_package')->getTheme('layout')
);
foreach ($params as $key => $value) {
if (isset($bind[$key])) {
$bind[$key] = $value;
}
}
$bind['layout_update_handle'] = $handle;
$result = '';
$readAdapter = $this->_getReadAdapter();
if ($readAdapter) {
$select = $readAdapter->select()
->from(array('layout_update' => $this->getMainTable()), array('xml'))
->join(array('link'=>$this->getTable('core/layout_link')),
'link.layout_update_id=layout_update.layout_update_id',
'')
->where('link.store_id IN (0, :store_id)')
->where('link.area = :area')
->where('link.package = :package')
->where('link.theme = :theme')
->where('layout_update.handle = :layout_update_handle')
->order('layout_update.sort_order ' . Varien_Db_Select::SQL_ASC);
$result = join('', $readAdapter->fetchCol($select, $bind));
}
return $result;
}
$ result预计为空字符串。 $ select看起来像这样:
2014-06-22T13:52:12+00:00 DEBUG (7): handle CATEGORY_56
query
object(Varien_Db_Select)#295 (4) {
["_bind":protected]=>
array(0) {
}
["_adapter":protected]=>
object(Magento_Db_Adapter_Pdo_Mysql)#80 (31) {
["_defaultStmtClass":protected]=>
string(29) "Varien_Db_Statement_Pdo_Mysql"
["_transactionLevel":protected]=>
int(0)
["_connectionFlagsSet":protected]=>
bool(true)
["_ddlCache":protected]=>
array(1) {
[1]=>
array(2) {
["catalog_product_flat_1"]=>
array(56) {
["entity_id"]=>
array(14) {
["SCHEMA_NAME"]=>
NULL
["TABLE_NAME"]=>
string(22) "catalog_product_flat_1"
["COLUMN_NAME"]=>
string(9) "entity_id"
["COLUMN_POSITION"]=>
int(1)
["DATA_TYPE"]=>
string(3) "int"
["DEFAULT"]=>
NULL
["NULLABLE"]=>
bool(false)
["LENGTH"]=>
NULL
["SCALE"]=>
NULL
["PRECISION"]=>
NULL
["UNSIGNED"]=>
bool(true)
["PRIMARY"]=>
bool(true)
["PRIMARY_POSITION"]=>
int(1)
["IDENTITY"]=>
bool(false)
}
["attribute_set_id"]=>
array(14) {
["SCHEMA_NAME"]=>
NULL
["TABLE_NAME"]=>
string(22) "catalog_product_flat_1"
["COLUMN_NAME"]=>
string(16) "attribute_set_id"
["COLUMN_POSITION"]=>
int(2)
["DATA_TYPE"]=>
string(8) "smallint"
["DEFAULT"]=>
string(1) "0"
["NULLABLE"]=>
bool(false)
["LENGTH"]=>
NULL
["SCALE"]=>
NULL
["PRECISION"]=>
NULL
["UNSIGNED"]=>
bool(true)
["PRIMARY"]=>
bool(false)
["PRIMARY_POSITION"]=>
NULL
["IDENTITY"]=>
bool(false)
}
["type_id"]=>
array(14) {
["SCHEMA_NAME"]=>
NULL
["TABLE_NAME"]=>
string(22) "catalog_product_flat_1"
["COLUMN_NAME"]=>
string(7) "type_id"
["COLUMN_POSITION"]=>
int(3)
["DATA_TYPE"]=>
string(7) "varchar"
["DEFAULT"]=>
string(6) "simple"
["NULLABLE"]=>
bool(false)
["LENGTH"]=>
string(2) "32"
["SCALE"]=>
NULL
["PRECISION"]=>
NULL
["UNSIGNED"]=>
NULL
["PRIMARY"]=>
bool(false)
["PRIMARY_POSITION"]=>
NULL
["IDENTITY"]=>
bool(false)
}
["cost"]=>
array(14) {
["SCHEMA_NAME"]=>
NULL
["TABLE_NAME"]=>
string(22) "catalog_product_flat_1"
["COLUMN_NAME"]=>
string(4) "cost"
["COLUMN_POSITION"]=>
int(4)
["DATA_TYPE"]=>
string(7) "decimal"
["DEFAULT"]=>
NULL
["NULLABLE"]=>
bool(true)
["LENGTH"]=>
NULL
["SCALE"]=>
string(1) "4"
["PRECISION"]=>
string(2) "12"
["UNSIGNED"]=>
NULL
["PRIMARY"]=>
bool(false)
["PRIMARY_POSITION"]=>
NULL
["IDENTITY"]=>
bool(false)
}
["created_at"]=>
array(14) {
["SCHEMA_NAME"]=>
NULL
["TABLE_NAME"]=>
string(22) "catalog_product_flat_1"
["COLUMN_NAME"]=>
string(10) "created_at"
["COLUMN_POSITION"]=>
int(5)
["DATA_TYPE"]=>
string(9) "timestamp"
["DEFAULT"]=>
NULL
["NULLABLE"]=>
bool(true)
["LENGTH"]=>
NULL
["SCALE"]=>
NULL
["PRECISION"]=>
NULL
["UNSIGNED"]=>
NULL
["PRIMARY"]=>
bool(false)
["PRIMARY_POSITION"]=>
NULL
["IDENTITY"]=>
bool(false)
}
[MORE ATTRIBUTES]
}
}
}
["_bindParams":protected]=>
array(0) {
}
["_bindIncrement":protected]=>
int(0)
["_debug":protected]=>
bool(false)
["_logQueryTime":protected]=>
float(0.05)
["_logAllQueries":protected]=>
bool(false)
["_logCallStack":protected]=>
bool(false)
["_debugFile":protected]=>
string(23) "var/debug/pdo_mysql.log"
["_debugIoAdapter":protected]=>
NULL
["_debugTimer":protected]=>
int(0)
["_cacheAdapter":protected]=>
object(Varien_Cache_Core)#18 (6) {
["_specificOptions":protected]=>
array(1) {
["slab_size"]=>
int(0)
}
["_backend":protected]=>
object(Cm_Cache_Backend_File)#10 (4) {
["_options":protected]=>
array(11) {
["cache_dir"]=>
string(41) "/home/www/xxxx/magento/var/cache/"
["file_name_prefix"]=>
string(2) "cm"
["file_locking"]=>
bool(true)
["read_control"]=>
bool(false)
["read_control_type"]=>
string(5) "crc32"
["hashed_directory_level"]=>
int(2)
["use_chmod"]=>
bool(false)
["directory_mode"]=>
int(504)
["file_mode"]=>
int(432)
["hashed_directory_umask"]=>
int(504)
["cache_file_umask"]=>
int(432)
}
["_isTagDirChecked":protected]=>
NULL
["_metadatasArray":protected]=>
array(0) {
}
["_directives":protected]=>
array(3) {
["lifetime"]=>
int(7200)
["logging"]=>
bool(false)
["logger"]=>
NULL
}
}
["_options":protected]=>
array(9) {
["write_control"]=>
bool(true)
["caching"]=>
bool(true)
["cache_id_prefix"]=>
string(5) "xxx"
["automatic_serialization"]=>
bool(false)
["automatic_cleaning_factor"]=>
int(0)
["lifetime"]=>
int(7200)
["logging"]=>
bool(false)
["logger"]=>
NULL
["ignore_user_abort"]=>
bool(false)
}
["_lastId":"Zend_Cache_Core":private]=>
string(37) "XX_DB_PDO_MYSQL_DDL_eav_attribute_1"
["_extendedBackend":protected]=>
bool(true)
["_backendCapabilities":protected]=>
array(6) {
["automatic_cleaning"]=>
bool(true)
["tags"]=>
bool(true)
["expired_read"]=>
bool(true)
["priority"]=>
bool(false)
["infinite_lifetime"]=>
bool(true)
["get_list"]=>
bool(true)
}
}
["_isDdlCacheAllowed":protected]=>
bool(true)
["_ddlColumnTypes":protected]=>
array(13) {
["boolean"]=>
string(4) "bool"
["smallint"]=>
string(8) "smallint"
["integer"]=>
string(3) "int"
["bigint"]=>
string(6) "bigint"
["float"]=>
string(5) "float"
["decimal"]=>
string(7) "decimal"
["numeric"]=>
string(7) "decimal"
["date"]=>
string(4) "date"
["timestamp"]=>
string(9) "timestamp"
["datetime"]=>
string(8) "datetime"
["text"]=>
string(4) "text"
["blob"]=>
string(4) "blob"
["varbinary"]=>
string(4) "blob"
}
["_ddlRoutines":protected]=>
array(5) {
[0]=>
string(3) "alt"
[1]=>
string(3) "cre"
[2]=>
string(3) "ren"
[3]=>
string(3) "dro"
[4]=>
string(3) "tru"
}
["_tempRoutines":protected]=>
string(22) "#^\w+\s+temporary\s#im"
["_intervalUnits":protected]=>
array(6) {
["YEARS"]=>
string(4) "YEAR"
["MONTHS"]=>
string(5) "MONTH"
["DAYS"]=>
string(3) "DAY"
["HOURS"]=>
string(4) "HOUR"
["MINUTES"]=>
string(6) "MINUTE"
["SECOND"]=>
string(6) "SECOND"
}
["_queryHook":protected]=>
array(2) {
["object"]=>
object(Mage_Core_Model_Resource_Setup)#77 (9) {
["_resourceName":protected]=>
string(14) "livechat_setup"
["_resourceConfig":protected]=>
object(Mage_Core_Model_Config_Element)#124 (2) {
["setup"]=>
object(Mage_Core_Model_Config_Element)#401 (1) {
["module"]=>
string(14) "Zopim_Livechat"
}
["connection"]=>
object(Mage_Core_Model_Config_Element)#580 (1) {
["use"]=>
string(10) "core_setup"
}
}
["_connectionConfig":protected]=>
object(Mage_Core_Model_Config_Element)#35 (9) {
["host"]=>
string
["username"]=>
string
["password"]=>
string
["dbname"]=>
string(13)
["initStatements"]=>
string(14) "SET NAMES utf8"
["model"]=>
string(6) "mysql4"
["type"]=>
string(9) "pdo_mysql"
["pdoType"]=>
object(Mage_Core_Model_Config_Element)#580 (0) {
}
["active"]=>
string(1) "1"
}
["_moduleConfig":protected]=>
object(Mage_Core_Model_Config_Element)#70 (3) {
["active"]=>
string(4) "true"
["codePool"]=>
string(5) "local"
["version"]=>
string(5) "0.5.0"
}
["_callAfterApplyAllUpdates":protected]=>
bool(false)
["_conn":protected]=>
*RECURSION*
["_tables":protected]=>
array(0) {
}
["_setupCache":protected]=>
array(0) {
}
["_queriesHooked":protected]=>
bool(true)
}
["method"]=>
string(17) "callbackQueryHook"
}
["_pdoType":protected]=>
string(5) "mysql"
["_numericDataTypes":protected]=>
array(16) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(2)
["INT"]=>
int(0)
["INTEGER"]=>
int(0)
["MEDIUMINT"]=>
int(0)
["SMALLINT"]=>
int(0)
["TINYINT"]=>
int(0)
["BIGINT"]=>
int(1)
["SERIAL"]=>
int(1)
["DEC"]=>
int(2)
["DECIMAL"]=>
int(2)
["DOUBLE"]=>
int(2)
["DOUBLE PRECISION"]=>
int(2)
["FIXED"]=>
int(2)
["FLOAT"]=>
int(2)
}
["_config":protected]=>
array(13) {
["host"]=>
string
["username"]=>
string
["password"]=>
string
["dbname"]=>
string
["initStatements"]=>
string(14) "SET NAMES utf8"
["model"]=>
string(6) "mysql4"
["type"]=>
string(9) "pdo_mysql"
["pdoType"]=>
string(0) ""
["active"]=>
string(1) "1"
["charset"]=>
NULL
["persistent"]=>
bool(false)
["options"]=>
array(3) {
["caseFolding"]=>
int(0)
["autoQuoteIdentifiers"]=>
bool(true)
["fetchMode"]=>
int(2)
}
["driver_options"]=>
array(0) {
}
}
["_fetchMode":protected]=>
int(2)
["_profiler":protected]=>
object(Zend_Db_Profiler)#52 (4) {
["_queryProfiles":protected]=>
array(0) {
}
["_enabled":protected]=>
bool(false)
["_filterElapsedSecs":protected]=>
NULL
["_filterTypes":protected]=>
NULL
}
["_defaultProfilerClass":protected]=>
string(16) "Zend_Db_Profiler"
["_connection":protected]=>
object(PDO)#94 (0) {
}
["_caseFolding":protected]=>
int(0)
["_autoQuoteIdentifiers":protected]=>
bool(true)
["_allowSerialization":protected]=>
bool(true)
["_autoReconnectOnUnserialize":protected]=>
bool(false)
}
["_parts":protected]=>
array(12) {
["straightjoin"]=>
bool(false)
["distinct"]=>
bool(false)
["columns"]=>
array(1) {
[0]=>
array(3) {
[0]=>
string(13) "layout_update"
[1]=>
string(3) "xml"
[2]=>
NULL
}
}
["union"]=>
array(0) {
}
["from"]=>
array(2) {
["layout_update"]=>
array(4) {
["joinType"]=>
string(4) "from"
["schema"]=>
NULL
["tableName"]=>
string(18) "core_layout_update"
["joinCondition"]=>
NULL
}
["link"]=>
array(4) {
["joinType"]=>
string(10) "inner join"
["schema"]=>
NULL
["tableName"]=>
string(16) "core_layout_link"
["joinCondition"]=>
string(52) "link.layout_update_id=layout_update.layout_update_id"
}
}
["where"]=>
array(5) {
[0]=>
string(33) "(link.store_id IN (0, :store_id))"
[1]=>
string(23) "AND (link.area = :area)"
[2]=>
string(29) "AND (link.package = :package)"
[3]=>
string(25) "AND (link.theme = :theme)"
[4]=>
string(50) "AND (layout_update.handle = :layout_update_handle)"
}
["group"]=>
array(0) {
}
["having"]=>
array(0) {
}
["order"]=>
array(1) {
[0]=>
array(2) {
[0]=>
string(24) "layout_update.sort_order"
[1]=>
string(3) "ASC"
}
}
["limitcount"]=>
NULL
["limitoffset"]=>
NULL
["forupdate"]=>
bool(false)
}
["_tableCols":protected]=>
array(0) {
}
}
Result
string(0) ""
奇怪的是,在我的快速测试开发中,$ result也是空的? 真的不知道这一切意味着什么!
EDIT2: 在使用Magneto Debug查看实例化模型时,我注意到了这一点: 模型
Resource Name Model Class Times Instantiated
catalog/category_flat Mage_Catalog_Model_Category 32
cms/page Mage_Cms_Model_Page 18
cms/block Mage_Cms_Model_Block 5
catalog/attribute Mage_Catalog_Model_Resource_Eav_Attribute 2
eav/entity_type Mage_Eav_Model_Entity_Type 2
core/url_rewrite Mage_Core_Model_Url_Rewrite 2
index/process Mage_Index_Model_Process 2
core/flag Mage_Catalog_Model_Product_Flat_Flag 1
customer/group Mage_Customer_Model_Group 1
但是:catalog/product Mage_Catalog_Model_Product 9
不是shwon,即使有显示的产品,并且在快速商店中实例化。