EC-CUBE2.11.1でAPCの動作を確認してみる

EC-CUBE2.11.1でAPCの動作を確認してみる

EC-CUBEはそれなりに負荷の高いアプリです
APCを使って少しでも負荷を下げたいところですが2.4.4の時はDB周りがAPCに対応できないと言う問題がありました

EC-CUBE2.11.1ではどうなったのか確かめてみたいと思います

PHP5.2.9+APC3.0.19の場合

だーいぶわかりにくいですがMDB2.phpとか含まれているので動いている模様

PHP5.3.6+APC3.1.6の場合

画面の一番下にf見慣れたFatal errorが

Fatal error: Class 'MDB2' not found in /var/www/apps/eccube-2.11.1/data/class/SC_Query.php on line 76
 
Call Stack:
    0.0820    2554744   1. SC_Helper_Session>sfSessWrite() /var/www/apps/eccube-2.11.1/data/class/helper/SC_Helper_Session.php:0
    0.0820    2555336   2. SC_Query>SC_Query() /var/www/apps/eccube-2.11.1/data/class/helper/SC_Helper_Session.php:85
 
Dump $_GET
   $_GET['transactionid'] = '2da42b0d905ea0063638499b3be5cbf1cd29b3a2'
   $_GET['product_id'] = ''
   $_GET['category_id'] = ''
Dump $_POST

このエラーが出ているとなにが起きるかというと、SESSIONへの書き込みが出来ないのでカゴの中に商品が入らなくなってしまいます。

動作するように修正してみる

# vim data/class/pages/LC_Page.phpのfunction destroy() に1行足します

session_write_close();

すると、エラーが消えました(*´Д`*)
これコミットしておこうかな・・・

ちゃんとカゴにも商品が入るようにヽ(´ー`)ノ
なんでこれで直るのかはPHPのSESSIONの書き込みが変わったことが原因なのですが省略します

APCの管理画面にもMDB2.phpやSC_Helper_Session_Ex.phpが出ているのでちゃんと動いている模様

と、いうわけでEC-CUBE2.11.1でAPCは1行追加すれば問題なく動く、と思います

#2012/03/08追記

EC-CUBE2.11.5ではAPCをONにしていると管理画面が500エラーになり開けないことを確認しています
上記修正内容で問題なく動くことを確認していますがPHP5をお使いの場合

EC-CUBE2.11系のパフォーマンスを185%あげる4つの手法 | のぶろぐに書いた方法を利用しますとよりパフォーマンスがよくなります

SC_Helper_Session_Exに追記します

function __destruct() {
         session_write_close();
     }