【EC-CUBE】集計ページが正しく表示されない・・・対応策の備忘録

集計表示でタイムアウト・・・デフォルトではリアルタイム集計をしているので、動作が重くサーバに負荷も掛かってしまう。

思い切ってバッチ処理で夜中に前日までの売り上げを集計しておくことにする。これで、集計を見るときにはサックサク動くはず。

と思ったら、いくつかバグがあり、MYSQLを使っていると、バグを踏んでるいくつかの集計は表示されない。エラーでまくり、なんだこりゃ。全体的に、MYSQL関係でなんだかんだとエラーが出るんだね。

てことで、バッチ処理にする手前で、虫退治に出かけることになる。。。

表示できなかったのは、mySQLを使用した際、ポスグレでは利用できるtrunc関数をmySQL用にtruncate関数へ変換する処理が上手く機能していないため。

そこで、シンタックスエラーになっていたSQL構文を修正し、動作不良を修正。その後、MYSQL用にtrunc→truncate変換をしているsfChangeMySQLが2重に掛かっている(と思われる)部分をコメントアウト。コレで何とかサクサク動作を手に入れた;

その1)シンタックスエラーの修正。

/data/class/batch/SC_Batch_Daily.php (L189、L271:ver.2.3.2の場合)

/data/class/pages/admin/total/LC_Page_Admin_Total.php (L641、L709:ver.2.3.2の場合)

上記2つのファイルの(AVG(total))→(AVG(total),0)へ変更
この時点で、エラーの出ていた職業別集計と会員別集計のうち職業別集計は表示されるようになる。

その2)trunc→truncate変換をしているsfChangeMySQLの2重適用部分をコメントアウト。

/data/class/SC_Query.php (L94:ver.2.3.2の場合)

この中の、$sqlse = $dbFactory->sfChangeMySQL($sqlse); 1行をコメントアウト(または削除)

※/data/class/SC_Query.phpの$sqlseというのが、なんに使われているのか分からなかったが、ここでは、sfChangeMySQLの処理を行っているだけで、同じ処理がSC_DbConnでも順に行っていることから不要かと判断する。

これで動作はエラーがなくなった。
あとはバッチ処理で夜中にcronを動かすのみ。だ~~~~~。