EC-CUBE / ec-cube2

EC-CUBE official repository version 2
https://www.ec-cube.net
Other
86 stars 97 forks source link

セッションデータに保存される配送商品のコンテンツデータは必要? #1007

Open clicktx opened 3 weeks ago

clicktx commented 3 weeks ago

dtb_session.sess_dataに保存されるデータにshipping itemsに関する無駄な情報が多い気がします。

  1. カートに商品を追加
  2. shoppingプロセスをすすんで「入力内容のご確認画面」まで進む(途中まででも良いかも)
  3. セッションデータに商品データ全て(?)が保存される

main_commentやsub_title1〜、sub_comment1〜等、dtb_productsにあるデータが(恐らく)すべて含まれるため、商品の説明コンテンツが長いほどデータ量が多くなります。

何かに使われる気はしないのですが、必要なデータなのでしょうか? かなり昔にMySQLでセッションデータがオーバーフローする現象がある、というような書き込みを見かけた気がしますが、、、

nanasess commented 3 weeks ago

一応、不要なデータは切り落すようになっていたと思いますが、正常に動作していませんかね、、? https://github.com/EC-CUBE/ec-cube2/blob/74eaa0a4bacce4c115fa1abbcd0802e4e734590f/data/class/SC_CartSession.php#L342-L372

かなり昔にMySQLでセッションデータがオーバーフローする現象がある、というような書き込みを見かけた気がしますが、、、

2.13 までは MySQL は text 型のカラムにセッション情報を格納していたので、しばしば溢れるケースがありました https://github.com/EC-CUBE/ec-cube2/commit/866be13e78cabf91141e5809fe6ff06a1697c06d https://svn.ec-cube.net/open_trac/ticket/1341

clicktx commented 3 weeks ago

DBによる違いはありますでしょうか? 検証環境はphp7.4+postgresqlです。

ショッピングプロセスで配送先が確定された時の更新で追加される感じでした。

セッションの中身をJSONにしたものを貼っておきます。 https://gist.github.com/clicktx/2d0e12842620505f56d40349c6fcc3a4

clicktx commented 3 weeks ago

ざっとコードを追うと下記部分が怪しい感じですかね(未検証)

https://github.com/EC-CUBE/ec-cube2/blob/74eaa0a4bacce4c115fa1abbcd0802e4e734590f/data/class/helper/SC_Helper_Purchase.php#L371-L398

ここで代入していそう

$product = &$objProduct->getDetailAndProductsClass($product_class_id);
$arrItems['productsClass'] = $product;
nanasess commented 3 weeks ago

@clicktx ありがとうございます。こちらでも確認してみますね