1

Magento CE 1.6.2 のすべてのページでこのクエリが呼び出されています。どこから呼び出されているかを調べるために、すべてのモジュールを無効にし、カスタマイズを削除しましたが、まだ呼び出されています。このクエリはページの読み込み時間を遅らせており、停止する方法を見つけようとしています。実行されることから。

クエリを以下に示します。簡単にするために、多くのカテゴリ ID を削除して、SQL を短くしています。このクエリが呼び出されないようにするための解決策やヒントを得ることができれば幸いです。

SELECT `e`.*, IF(at_is_active.value_id > 0, at_is_active.value, at_is_active_default.value) AS `is_active`, IF(at_include_in_menu.value_id > 0, at_include_in_menu.value, at_include_in_menu_default.value) AS `include_in_menu`, `core_url_rewrite`.`request_path` FROM `catalog_category_entity` AS `e`
INNER JOIN `catalog_category_entity_int` AS `at_is_active_default` ON (`at_is_active_default`.`entity_id` = `e`.`entity_id`) AND (`at_is_active_default`.`attribute_id` = '119') AND `at_is_active_default`.`store_id` = 0
LEFT JOIN `catalog_category_entity_int` AS `at_is_active` ON (`at_is_active`.`entity_id` = `e`.`entity_id`) AND (`at_is_active`.`attribute_id` = '119') AND (`at_is_active`.`store_id` = 1)
INNER JOIN `catalog_category_entity_int` AS `at_include_in_menu_default` ON (`at_include_in_menu_default`.`entity_id` = `e`.`entity_id`) AND (`at_include_in_menu_default`.`attribute_id` = '934') AND `at_include_in_menu_default`.`store_id` = 0
LEFT JOIN `catalog_category_entity_int` AS `at_include_in_menu` ON (`at_include_in_menu`.`entity_id` = `e`.`entity_id`) AND (`at_include_in_menu`.`attribute_id` = '934') AND (`at_include_in_menu`.`store_id` = 1)
LEFT JOIN `core_url_rewrite` ON (core_url_rewrite.category_id=e.entity_id) AND (core_url_rewrite.is_system=1 AND core_url_rewrite.product_id IS NULL AND core_url_rewrite.store_id='1' AND id_path LIKE 'category/%') WHERE (`e`.`entity_type_id` = '9') AND (`e`.`entity_id` IN('105', '125', '284', '285', '286', '288', '289', '185', '463', '464', '465', '625')) AND (`e`.`entity_id` NOT IN('140', '145',  '530', '531', '775')) AND (IF(at_is_active.value_id > 0, at_is_active.value, at_is_active_default.value) = '1') AND (IF(at_include_in_menu.value_id > 0, at_include_in_menu.value, at_include_in_menu_default.value) = '1')

乾杯アルジュン

4

4 に答える 4

1

これは、インデックス catalogue_url が原因である可能性があります

簡単な修正は、すべてのインデックス作成を手動に設定することです。

次に、1 時間ごとに cron を介してこのシェル スクリプトを実行します。

php shell/indexer.php --reindex catalog_product_attribute
php shell/indexer.php --reindex catalog_product_price
php shell/indexer.php --reindex tag_summary
php shell/indexer.php --reindex cataloginventory_stock
php shell/indexer.php --reindex catalogsearch_fulltext
php shell/indexer.php --reindex catalog_category_product
php shell/indexer.php --reindex catalog_category_flat
php shell/indexer.php --reindex catalog_product_flat 

URL を除くすべてのインデックスを作成します。

次に、これを毎晩実行します。

<?php

echo "clearing core_url_rewrite so that indexer can repopulate immediately\n";

require_once "/home/path/to/store/app/Mage.php";
umask( 0 );
Mage::App('default');

$resource = Mage::getSingleton('core/resource');

$writeConnection = $resource->getConnection('core_write');

$query = "TRUNCATE `core_url_rewrite`";

$writeConnection->query($query);

echo "cleared\n";

$start = time();

echo "reindexing catalog_url start \n";

$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_url');
$process->reindexEverything();

$finish = time() - $start;

echo "reindexing catalog_url finished in ".$finish." seconds \n";

?>
于 2013-07-09T04:27:48.207 に答える
0

Blocks HTML 出力キャッシュを有効にします。したがって、メニューは最初のページ呼び出しでのみレンダリングする必要があります。Magento 1.7 以降、このブロックはキャッシュされなくなり、プログラムでキャッシュを有効にする必要があります。

于 2014-05-13T11:43:24.073 に答える
0

top.phtmlコードを、定期的に更新されるメニューの静的バージョンに置き換えます。

menu.phpmagento ルート フォルダーにファイルを作成します。

#!/usr/bin/php
<?php
    require_once('app/Mage.php');
    Mage::app();

        $block = new Mage_Catalog_Block_Navigation();
        $_menu = $block->renderCategoriesMenuHtml(0,'level-top');

        echo "
        <div class='nav-container'>
            <ul id='nav'>
                        $_menu
            </ul>
        </div>
        ";
?>

次に、./shellディレクトリに別のファイルcreate-category-menus.sh.

#!/bin/bash
/[path to magento root]/menu.php > /[path to magento root]/app/design/frontend/default/[template_name]/template/catalog/navigation/top.phtml.temp

rm -f /[path to magento root]/app/design/frontend/default/[template_name]/template/catalog/navigation/top.phtml

mv  /[path to magento root]/app/design/frontend/default/[template_name]/template/catalog/navigation/top.phtml.temp  /[path to magento root]/app/design/frontend/default/[template_name]/template/catalog/navigation/top.phtml

chown [webserver-user].[webserver-group]  /[path to magento root]/app/design/frontend/default/[template_name]/template/catalog/navigation/top.phtml

create-category-menus.sh次に、定期的な間隔で、たとえば 15 分程度で crontab に 追加します。

おそらく、出力ファイルのフォルダー構造を作成する必要があります。これは、Linux サーバーを使用していることも前提としています。そうでない場合は、そうする必要があります。:)

于 2012-08-16T20:44:32.427 に答える
0

ナビゲーションに使用されるクエリのようです。magento の既定のテーマは、動的トップ ナビゲーションのカテゴリを次のようにプルします。

/app/code/core/Mage/Catalog/Block/Navigation.php

renderCategoriesMenuHtml() は (デフォルトで) 以下から呼び出されます。

ベース/デフォルト/テンプレート/カタログ/ナビゲーション/トップ.phtml

于 2012-07-10T21:12:32.607 に答える