その他 > その他 > 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 |
その他
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
pineray |
投稿日時: 2007/12/7 11:07
対応状況: −−−
|
長老 登録日: 2006/9/9 居住地: 伊賀 投稿: 292 |
Re: 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 引用:
本来であれば, 各 process() 関数にロジック部分は記述せず, ロジックはしっかりリファクタリングしてローカル関数化し, process() 関数は switch などで画面遷移をコントロールするのみにするべきだと思います. なるほどキレイなコードで拡張性や再利用性も高そうです これなら表示処理もさほど気にせず割り込み処理を追加できます。 やはり手習いで覚えた生半可な知識では駄目ですね 引用: すべてのコードを上記のようにするには, 大変な労力が必要ですが, 開発コミュニティやコミッターの頑張り次第ではないでしょうか. . . いつも口先だけで面目ないのですが、 僕も微力ながら手助けしたいと思います。 引用: できれば, objViewは道連れに. . . したくないですよね. . . ええ、とっても...気持ちが悪いです |
nanasess |
投稿日時: 2007/12/7 1:11
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 引用:
本来であれば, 各 process() 関数にロジック部分は記述せず, ロジックはしっかりリファクタリングしてローカル関数化し, process() 関数は switch などで画面遷移をコントロールするのみにするべきだと思います. しかし, 現状では 1.x 系列のロジックを, ほとんどそのまま持ってきているため, カスタマイズ時は冗長なコーディングをせざるおえないと思います. 現状:
理想:
上記のようなコードであれば, カスタマイズしたい場合, 一部の関数のみオーバーライドしてやれば良く, 表示処理も邪魔にならないと思います. すべてのコードを上記のようにするには, 大変な労力が必要ですが, 開発コミュニティやコミッターの頑張り次第ではないでしょうか. . . 引用:
できれば, objViewは道連れに. . . したくないですよね. . . |
nanasess |
投稿日時: 2007/12/7 0:37
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 引用:
MySQL の内部構造に詳しくないので憶測ですが. . . おそらく DISTINCT で結果をマージするためのメモリ確保ができないのではないでしょうか. これは, レコード件数ではなく, カラム数が影響しているものと思われます. DISTINCT するカラムを減らすことで解決するかもしれませんが, 表示できない項目が出たり, 他のエラーが発生する可能性があります. # ORDER BY で使用するカラムは最低限必要です はずしていたらごめんなさい. |
kvex2004 |
投稿日時: 2007/12/7 0:14
対応状況: −−−
|
長老 登録日: 2007/10/31 居住地: 埼玉 投稿: 218 |
Re: 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 えっと、先にも申し上げたとおり、本運用のほうでは動いてるのでさほど大げさにしているわけでは無いんです。
pgsqlで動くのは確認してますが、本運用がMySQLですので、ローカル環境でも動いて欲しかっただけです。 それと、データ数についてですが、インスト直後のサンプルデータしか入っていない状態ですので、レコード数が多いわけでは無いと思うんですよね。なのでよけいに悩んでいました。 xamppのせいかな?とか。 普通にApache、MySQL、PHPをインストールして試してみようかと思っています。 さっき違うPCにxamppを入れて試してみましたが、同じくdisinctのところでクエリが怒られます(涙 |
saratoga |
投稿日時: 2007/12/6 9:42
対応状況: −−−
|
一人前 登録日: 2006/9/22 居住地: 大阪 投稿: 76 |
Re: 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 saratogaです。
MySQL で OutOfMemory は初めて見ましたが、 私もチューニングを試す価値はあると思います。 細かい部分だと下記のサイトがわかりやすいです。 http://dsas.blog.klab.org/archives/50860867.html また、EXPLAIN を使って、実行するクエリで 本当に意図したインデックスが使われているかなど、 クエリやテーブル構造のチューニングで 改善するパターンもあるかと思います。
|
nanasess |
投稿日時: 2007/12/6 8:12
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 大河内です.
引用:
エラーコードの意味は MySQL のマニュアルにあると思いますが, SQL の実行に必要なメモリを確保できないようです. 商品リスト初期表示が可能でしたら, おそらく, DISTINCT するカラムが多すぎるからでしょう. EC-CUBE2.0.0 から, 複数カテゴリ対応の影響で, MySQL では非常に複雑な SQL が必要となってしまいました. おそらく, EC-CUBE側で解決するのは難しいと思います. # 複数カテゴリを捨てるというカスタマイズは有効かもしれませんが. . . MySQL のチューニングをしてみてはいかがでしょうか. また, PostgreSQL を試してみるという手もあります. 現在のバージョンでは, Windows でも比較的楽に導入可能かと思います. |
kvex2004 |
投稿日時: 2007/12/6 0:10
対応状況: −−−
|
長老 登録日: 2007/10/31 居住地: 埼玉 投稿: 218 |
Re: 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 あぁ、すみません。
トピが変わったので、ちゃんと提示しないといけませんね。 以下のようなエラーです 価格順/新着順 ともに SELECT DISTINCT price02_min, product_id, product_code_min, product_code_max, name, comment1, comment2, comment3, main_list_comment, main_image, main_list_image, price01_min, price01_max, price02_max, stock_min, stock_max, stock_unlimited_min, stock_unlimited_max, point_rate, sale_limit, sale_unlimited, deliv_date_id, deliv_fee, status, product_flag, create_date, del_flg FROM (SELECT T1.product_id, product_code_min, product_code_max, price01_min, price01_max, price02_min, price02_max, stock_min, stock_max, stock_unlimited_min, stock_unlimited_max, del_flg, status, name, comment1, comment2, comment3, main_list_comment, main_image, main_list_image, product_flag, deliv_date_id, sale_limit, point_rate, sale_unlimited, create_date, deliv_fee, rank ,(SELECT rank AS category_rank FROM dtb_category AS T4 WHERE T1.category_id = T4.category_id) as category_rank ,(SELECT category_id AS sub_category_id FROM dtb_category T4 WHERE T1.category_id = T4.category_id) as category_id FROM (SELECT T0.product_id, T0.del_flg, T0.status, T0.name, T0.comment1, T0.comment2, T0.comment3, T0.main_list_comment, T0.main_image, T0.main_list_image, T0.product_flag, T0.deliv_date_id, T0.sale_limit, T0.point_rate, T0.sale_unlimited, T0.create_date, T0.deliv_fee, T00.category_id, T00.rank FROM dtb_products AS T0 LEFT JOIN dtb_product_categories AS T00 USING (product_id)) AS T1 RIGHT JOIN (SELECT product_id as product_id_sub, MIN(product_code) AS product_code_min, MAX(product_code) AS product_code_max, MIN(price01) AS price01_min, MAX(price01) AS price01_max, MIN(price02) AS price02_min, MAX(price02) AS price02_max, MIN(stock) AS stock_min, MAX(stock) AS stock_max, MIN(stock_unlimited) AS stock_unlimited_min, MAX(stock_unlimited) AS stock_unlimited_max FROM dtb_products_class GROUP BY product_id) AS T2 ON T1.product_id = T2.product_id_sub ) AS T1 WHERE del_flg = 0 AND status = 1 AND category_id IN ( ?,? ,? ,? ) ORDER BY price02_min ASC, product_id ASC LIMIT 15 OFFSET 0 DB Error: unknown error SELECT DISTINCT price02_min, product_id, product_code_min, product_code_max, name, comment1, comment2, comment3, main_list_comment, main_image, main_list_image, price01_min, price01_max, price02_max, stock_min, stock_max, stock_unlimited_min, stock_unlimited_max, point_rate, sale_limit, sale_unlimited, deliv_date_id, deliv_fee, status, product_flag, create_date, del_flg FROM (SELECT T1.product_id, product_code_min, product_code_max, price01_min, price01_max, price02_min, price02_max, stock_min, stock_max, stock_unlimited_min, stock_unlimited_max, del_flg, status, name, comment1, comment2, comment3, main_list_comment, main_image, main_list_image, product_flag, deliv_date_id, sale_limit, point_rate, sale_unlimited, create_date, deliv_fee, rank ,(SELECT rank AS category_rank FROM dtb_category AS T4 WHERE T1.category_id = T4.category_id) as category_rank ,(SELECT category_id AS sub_category_id FROM dtb_category T4 WHERE T1.category_id = T4.category_id) as category_id FROM (SELECT T0.product_id, T0.del_flg, T0.status, T0.name, T0.comment1, T0.comment2, T0.comment3, T0.main_list_comment, T0.main_image, T0.main_list_image, T0.product_flag, T0.deliv_date_id, T0.sale_limit, T0.point_rate, T0.sale_unlimited, T0.create_date, T0.deliv_fee, T00.category_id, T00.rank FROM dtb_products AS T0 LEFT JOIN dtb_product_categories AS T00 USING (product_id)) AS T1 RIGHT JOIN (SELECT product_id as product_id_sub, MIN(product_code) AS product_code_min, MAX(product_code) AS product_code_max, MIN(price01) AS price01_min, MAX(price01) AS price01_max, MIN(price02) AS price02_min, MAX(price02) AS price02_max, MIN(stock) AS stock_min, MAX(stock) AS stock_max, MIN(stock_unlimited) AS stock_unlimited_min, MAX(stock_unlimited) AS stock_unlimited_max FROM dtb_products_class GROUP BY product_id) AS T2 ON T1.product_id = T2.product_id_sub ) AS T1 WHERE del_flg = 0 AND status = 1 AND category_id IN ( 1,'3' ,'4' ,'5' ) ORDER BY price02_min ASC, product_id ASC LIMIT 15 OFFSET 0 [nativecode=1037 ** Out of memory; restart server and try again (needed 65528 bytes)] |
pineray |
投稿日時: 2007/12/5 16:41
対応状況: −−−
|
長老 登録日: 2006/9/9 居住地: 伊賀 投稿: 292 |
Re: 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 ご返答いただき誠にありがとうございます。
全く貢献していないのに文句ばかり言って申し訳ありません 引用: nanasessさんは書きました: はい、イメージとしては上記のような感じです。 引用: 上記のようにすると, process() 関数の途中で SC_SiteView のインスタンスに何らかの処理をしたい場合, 少々不便に感じます. 「邪魔になる」という表現が悪かったですね 例えば商品のデータを取得した後で表示するというprocess() 関数があった場合に、データの取得と表示の間に割り込ませたい処理があるとします。 現状では、親クラスの関数を使わずに、まるまるコピーした後で割り込ませたい処理を追加するだけの冗長なコーディングをせざるを得ません。 だとすると、今回のアーキテクチャ変更の恩恵が減少してしまうように感じるわけです。 引用: # それよりも, 各 process() 関数をリファクタリングすべきかと... それは確かに... 引用: 「こうしたらどうか」というコーディングの具体例がありましたら, ご提示頂ければ幸いです. LC_Page_Index_EX.phpで試してみました。
そして、index.phpを
としたところ、無事に表示されました。 テンプレートにアサインする段階で、objViewも道連れにアサインしちゃってますけど |
nanasess |
投稿日時: 2007/12/5 14:51
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 引用:
どのような SQLエラーになるのでしょうか. |
nanasess |
投稿日時: 2007/12/5 14:50
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 【告知】EC-CUBE 2.0.1正式版をリリース致しました。 大河内です.
引用:
以下のようなイメージでしょうか?
上記のようにすると, process() 関数の途中で SC_SiteView のインスタンスに何らかの処理をしたい場合, 少々不便に感じます. また, ほとんどの Page クラスで, 表示処理は上記の3行ほどなので, 邪魔になることはあまり無いのではないでしょうか. class_extends 以下のクラスを使用してカスタマイズした場合, 冗長なコーディングとなりますが, さほど問題無いと思われます. # それよりも, 各 process() 関数をリファクタリングすべきかと... 「こうしたらどうか」というコーディングの具体例がありましたら, ご提示頂ければ幸いです. よろしくお願い致します. |
« 1 (2) 3 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |