バージョン選択

フォーラム

メニュー

オンライン状況

47 人のユーザが現在オンラインです。 (34 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 47
もっと...

サイト内検索

機能要望 > その他 > 規格まわりの内部構成変更について

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nanasess
投稿日時: 2010/9/20 20:23
対応状況: −−−
登録日: 2006/9/9
居住地: 大阪
投稿: 2156
規格まわりの内部構成変更について
ただいまから, #781 にて進めていた, 規格まわりの内部構成変更に伴う修正を version-2_5-dev ブランチへマージしようと思います.

http://svn.ec-cube.net/open_trac/ticket/781

手元の環境で, おおむね動作確認していますが, 下記の動作に問題が残っていますので, 開発/検証用途以外ではアップデートしないで下さい.

- モバイルサイトの規格選択
- 管理画面 -> 受注管理からの商品選択
- 商品の複製
- CSV ダウンロード
- 商品ステータス

2.4.4 までのバージョンでは, MySQL を使用した場合, 2000点程度の商品数で, ほとんど動作しないくらい鈍重となっていました.

しかし, この変更により, 下記のような環境でも PostgreSQL, MySQL 共に1〜3秒程度で商品一覧/詳細の表示が可能となります.

- 約50,000点の商品数
- 総合計約1,000,000点の商品規格
- 一部の商品に, 規格1, 2とも10件ずつ設定
- 1カテゴリに1000点の商品

検証した端末のスペックは以下の通りです.

[OS] Mac OS X 10.6
[PHP] 5.3.2
[データベース] PostgreSQL8.4.4/MySQL5.1.48
[WEBサーバ] Apache2.2.14
[CPU] Core2Duo 2.26GHz
[メモリ] 4G

データベースの設定パラメータは, ほぼデフォルトの状態です.

また, 商品関連の検索ロジックを SC_Product クラスにまとめることにより, 多くの VIEW が不要となりました.
近いうちに, すべての VIEW を削除しようと思っています.

コミットが完了しましたらお知らせします.
nanasess
投稿日時: 2010/9/20 20:54
対応状況: −−−
登録日: 2006/9/9
居住地: 大阪
投稿: 2156
Re: 規格まわりの内部構成変更について
r18815 でコミットしました.

http://svn.ec-cube.net/open_trac/changeset/18815

この変更に対応した, テストデータ生成スクリプトもアップしました.
http://svn.ec-cube.net/open_trac/raw-attachment/wiki/テストデータ生成スクリプト%28v2.0%29/createEcCubeData-v25.php

まだ不安定な部分も多いかと思いますが, フィードバック頂ければ幸いです!
seasoft
投稿日時: 2010/9/21 14:36
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7333
Re: 規格まわりの内部構成変更について
本件絡みと思われる不具合が r18816 にて発生しました。

管理機能「商品管理」での複製時に下記エラーが発生しました。

▼▼▼ デバッグ情報ここから ▼▼▼
http://1.eccube.local/ec25d/admin/products/product.php?

SERVER_ADDR: *
REMOTE_ADDR: *
USER_AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.55 Safari/534.3

/home/eccube/ec25d/html/admin/products/product.php 34:LC_Page_Admin_Products_Product_Ex->process
/home/eccube/ec25d/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Product_Ex.php 56:LC_Page_Admin_Products_Product->process
/home/eccube/ec25d/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php 110:SC_Helper_DB->sfHasProductClass
/home/eccube/ec25d/data/class/helper/SC_Helper_DB.php 1912:SC_Query->count
/home/eccube/ec25d/data/class/SC_Query.php 128:SC_Query->getOne
/home/eccube/ec25d/data/class/SC_Query.php 549:SC_Query->prepare
/home/eccube/ec25d/data/class/SC_Query.php 762:trigger_error
▼▼▼ エラーメッセージ ▼▼▼
https://1.eccube.local/ec25d/admin/products/product.php

SERVER_ADDR: *
REMOTE_ADDR: *
USER_AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.55 Safari/534.3

SQL: SELECT COUNT(*) FROM dtb_products_class WHERE product_id = ? AND class_combination_id IS NOT NULL

MDB2 Error: no such field

prepare: [Error message: Unable to create prepared statement handle]
[Last executed query: EXECUTE mdb2_statement_pgsql_64b22f611437eb763be3b925e58050155b5366517]
[Native message: ERROR:  column "class_combination_id" does not exist
LINE 1: ...FROM dtb_products_class WHERE product_id = $1 AND class_comb...
                                                             ^]


/home/eccube/ec25d/html/admin/products/product.php 34:LC_Page_Admin_Products_Product_Ex->process
/home/eccube/ec25d/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Product_Ex.php 56:LC_Page_Admin_Products_Product->process
/home/eccube/ec25d/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php 110:SC_Helper_DB->sfHasProductClass
/home/eccube/ec25d/data/class/helper/SC_Helper_DB.php 1912:SC_Query->count
/home/eccube/ec25d/data/class/SC_Query.php 128:SC_Query->getOne
/home/eccube/ec25d/data/class/SC_Query.php 549:SC_Query->prepare
/home/eccube/ec25d/data/class/SC_Query.php 759:MDB2_Driver_pgsql->prepare
/home/eccube/ec25d/data/module/MDB2/Driver/pgsql.php 965:MDB2_Driver_Common->raiseError
/home/eccube/ec25d/data/module/MDB2.php 1497:PEAR->raiseError
/home/eccube/ec25d/data/module/PEAR.php 557:MDB2_Error->MDB2_Error
/home/eccube/ec25d/data/module/MDB2.php 1009:PEAR_Error->PEAR_Error
▲▲▲ エラーメッセージ ▲▲▲

▲▲▲ デバッグ情報ここまで ▲▲▲


EC-CUBE 2.5.0-dev
OS Linux (Fedora)
DBサーバ PostgreSQL 8.3.7
WEBサーバ Apache/2.2.9
PHP 5.2.9
GD Loaded


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

nanasess
投稿日時: 2010/9/21 15:38
対応状況: −−−
登録日: 2006/9/9
居住地: 大阪
投稿: 2156
Re: 規格まわりの内部構成変更について
引用:

seasoftさんは書きました:
本件絡みと思われる不具合が r18816 にて発生しました。

管理機能「商品管理」での複製時に下記エラーが発生しました。


ありがとうございます.
対応漏れ(汗)ですので, TODO に追加しておきます.
nanasess
投稿日時: 2010/9/21 15:44
対応状況: −−−
登録日: 2006/9/9
居住地: 大阪
投稿: 2156
Re: 規格まわりの内部構成変更について
すみません.
エラーメッセージを, よくよく見てみると


SQL: SELECT COUNT(*) FROM dtb_products_class WHERE product_id = ? AND class_combination_id IS NOT NULL

MDB2 Error: no such field

prepare: [Error message: Unable to create prepared statement handle]
[Last executed query: EXECUTE mdb2_statement_pgsql_64b22f611437eb763be3b925e58050155b5366517]
[Native message: ERROR:  column "class_combination_id" does not exist
LINE 1: ...FROM dtb_products_class WHERE product_id = $1 AND class_comb...


dtb_products_class に class_combination_id が存在しないというエラーのようですが, テーブルカラムの変更は正常に反映されていますでしょうか?
seasoft
投稿日時: 2010/9/21 16:58
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7333
Re: 規格まわりの内部構成変更について
一応、再インストール直後に検証したのですが・・・

手順に誤りがあった懸念もありますので、もう一度確認してみます。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

seasoft
投稿日時: 2010/9/21 17:12
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7333
Re: 規格まわりの内部構成変更について
現在、確認中ですが、再インストールの過程で気になる点がありました。

インストール画面上は
○:ビューの削除に成功しました。
○:テーブルの削除に成功しました。
○:シーケンスの削除に成功しました。
と表示された状態ですが、下記オブジェクトが残っていました。

CREATE TABLE dtb_campaign (
CREATE SEQUENCE dtb_campaign_campaign_id_seq
CREATE TABLE dtb_campaign_detail (
CREATE TABLE dtb_campaign_order (
CREATE SEQUENCE dtb_campaign_order_campaign_order_id_seq
CREATE TABLE dtb_category (
CREATE TABLE dtb_category_total_count (
CREATE TABLE dtb_classcategory (
CREATE TABLE dtb_customer_mail_temp (
CREATE TABLE dtb_mailmaga_template (
CREATE SEQUENCE dtb_mailmaga_template_template_id_seq
CREATE TABLE dtb_order (
CREATE TABLE dtb_order_detail (
CREATE TABLE dtb_products (
CREATE TABLE dtb_products_class (
CREATE TABLE dtb_question (
CREATE SEQUENCE dtb_question_question_id_seq
CREATE TABLE dtb_question_result (
CREATE SEQUENCE dtb_question_result_result_id_seq
CREATE TABLE dtb_user_regist (
CREATE SEQUENCE dtb_user_regist_user_id_seq
CREATE TABLE mtb_srank (
CREATE VIEW vw_category_count AS
CREATE VIEW vw_cross_class AS
CREATE VIEW vw_cross_products_class AS
CREATE VIEW vw_download_class AS
CREATE VIEW vw_product_class AS
CREATE VIEW vw_products_nonclass AS
CREATE INDEX dtb_order_detail_product_id_key ON dtb_order_detail USING btree (product_id);
CREATE INDEX dtb_products_class_product_id_key ON dtb_products_class USING btree (product_id);


テーブルの削除が発生しているので、その分は仕方が無いとして、dtb_order 辺りが消えていないというのは不自然な気が。
ビューに依存ってありましたっけ?
(追記) vw_product_class が依存してました。

DROP / CREATE 時のエラーが潰されて、正常扱いになっているのかなぁと推測しております。
という事で、#781 絡みではなく、インストーラや SC_Query の問題のようですね。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

nanasess
投稿日時: 2010/9/21 18:19
対応状況: −−−
登録日: 2006/9/9
居住地: 大阪
投稿: 2156
Re: 規格まわりの内部構成変更について
引用:

seasoftさんは書きました:

テーブルの削除が発生しているので、その分は仕方が無いとして、dtb_order 辺りが消えていないというのは不自然な気が。
ビューに依存ってありましたっけ?
(追記) vw_product_class が依存してました。

DROP / CREATE 時のエラーが潰されて、正常扱いになっているのかなぁと推測しております。
という事で、#781 絡みではなく、インストーラや SC_Query の問題のようですね。


ご確認ありがとうございます.
インストーラの lfExecuteSQL() では, SC_Query を使用しておらず, MDB2::query() を使用しています.
ここで, エラーを捕捉できてない感じですかね.

そもそも, この関数は検索系SQLを実行するためのものなので, MDB2::exec() を使用した方が良いかもしれません.
seasoft
投稿日時: 2010/9/21 23:49
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7333
Re: 規格まわりの内部構成変更について
DB のオブジェクトを手動削除してから試したところ、別のエラーが発生しました。

このチケットとは別の原因のような気がするので、該当スレッドに報告を書き込みました。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=6489&post_id=32495&order=0&viewmode=flat&pid=31644&forum=5#forumpost32495

お騒がせいたしました。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

ECCUORE
投稿日時: 2010/9/22 10:19
対応状況: −−−
長老
登録日: 2009/10/22
居住地: 東京
投稿: 248
Re: 規格まわりの内部構成変更について
現在、ダウンロード販売を規格に対応しております。

その関係で、規格について質問です。
dtb_class_combination は、規格が無い商品の時も必要でしょうか?
現状、規格が無い商品が商品一覧画面で、全て品切れ表示になっています。

SC_Product getProductsClassByProductIds で dtb_class_combination をLEFT JOIN していますので、データが無い場合、LEVELがNULLになり
LEVEL判定(getProductsClassFullByProductId)で、商品情報がLOSTしているように見受けられますが、如何でしょうか?

dtb_class_combinationの仕組みを、まだよく理解していませんので、見当違いかもしれませんが。


----------------
EC CUORE 株式会社クオーレ
カスタマイズ御相談下さい。

(1) 2 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は72,247名です
総投稿数は101,655件です

投稿数ランキング

1
seasoft
7333
2
468
3037
3
AMUAMU
2712
4
nanasess
2156
5
umebius
2011
6
yuh
1612
7
red
1452
8
h_tanaka
1086
9
tsuji
936
10
fukap
907
11
shutta
835
12
tao_s
793
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.