[僅限PaaS]{class="badge informative" title="僅適用於雲端專案(Adobe管理的PaaS基礎結構)和內部部署專案的Adobe Commerce 。"}

ACSD-67166:在店面載入報價時重複執行cataloginventory_stock_status查詢

ACSD-67166修補程式修正了在店面載入報價時cataloginventory_stock_status查詢重複執行的問題,這會導致重複的DB呼叫。 安裝Quality Patches Tool (QPT) 1.1.70時,即可使用此修補程式。 修補程式ID為ACSD-67166。 請注意,此問題已排程在Adobe Commerce 2.4.9中修正。

受影響的產品和版本

已為Adobe Commerce版本建立修補程式:

  • Adobe Commerce (所有部署方法) 2.4.5-p13

與Adobe Commerce版本相容:

  • Adobe Commerce (所有部署方法) 2.4.4 - 2.4.8-p2
NOTE
此修補程式可能適用於發行版本為Quality Patches Tool的其他版本。 若要檢查修補程式是否與您的Adobe Commerce版本相容,請將magento/quality-patches套件更新至最新版本,並在Quality Patches Tool上檢查相容性:搜尋修補程式頁面。 使用修補程式ID作為搜尋關鍵字,以尋找修補程式。

問題

在店面載入報價時,發生cataloginventory_stock_status查詢的重複執行,造成重複的DB呼叫。

要再現的步驟

  1. 安裝乾淨的執行個體。

  2. 建立​ Category ​和​ Simple Product

  3. 前往類別並將產品新增至購物車。

  4. 前往購物車頁面: /checkout/cart/

  5. 在xDebug中設定中斷點:

    1. app/code/Magento/CatalogInventory/Model/StockRegistryPreloader.php:115
    2. app/code/Magento/InventoryCatalog/Model/LegacyStockStatusCache.php:73
    3. lib/internal/Magento/Framework/Data/AbstractSearchResult.php:233
    4. 中斷點條件strpos($this->query->getSelectSql(true), 'stock_status') !==false
      $_SERVER['REQUEST_URI']新增至​ 中的 ​監視PHPStorm,以驗證在同一要求中呼叫了兩次查詢。

預期結果

每個請求執行一次查詢。

實際結果

相同的查詢會執行兩次:

SELECT `main_table`.*, `cp_table`.`sku`, `cp_table`.`type_id` FROM `cataloginventory_stock_status` AS `main_table`
 INNER JOIN `catalog_product_entity` AS `cp_table` ON main_table.product_id = cp_table.entity_id AND (cp_table.created_in <= 1 AND cp_table.updated_in > 1) WHERE (`main_table`.`product_id` IN(2)) AND (`main_table`.`website_id` = '0')

套用修補程式

若要套用個別修補程式,請根據您的部署方法使用下列連結:

相關閱讀

若要進一步瞭解Quality Patches Tool,請參閱:

recommendation-more-help
c2d96e17-5179-455c-ad3a-e1697bb4e8c3