MongoDBを使ったセッション管理

MongoDBを使ったセッション管理のほうがMySQL(PDO)より確実に速いよね?でも、そのためのクラスが用意されてないよね?

ってことで、書いてみました。

sfMongoSessionStorage/sfMongoSessionStorage.class.php at master · brtriver/sfMongoSessionStorage · GitHub

書いたといっても、DBのセッション管理クラスをそのまま書き換えたぐらいです。

設定

使い方はfactories.ymlにて以下のように設定。
レプリケーションさせたりというところまでは考慮してません。

   storage:
     class: sfMongoSessionStorage
     param:
       host: localhost          #接続先
       port: 27017              #ポート
       db_name: symfony         #DB名
       collection_name: session #コレクション名

結果

ざっくばらんにローカル環境でab -n 5000 -c 100 した結果

MySQL   => Requests per second:    10.86 [#/sec] (mean)
MongoDB => Requests per second:    16.61 [#/sec] (mean)

Default => Requests per second:    17.58 [#/sec] (mean)

思っていた以上にMongoDBが優秀な結果に。CPUの使用率の問題などありますが使えそうです。