Ruby on Rails, Web Services, Software Development, Startups 概要 PHPのセッションハンドラをデフォルトで使っている場合のガーベージコレクタ(GC)の話。PHPはサーバ上で保存してあるセッション情報を保存してあるファイルをを定期的に削除している。削除するタイミングはPHPが起動する時、HTTPリクエストまたはコマンドラインからPHPが起動した際に一定の確率でGCが起動するようになっている。Javaのアプリケーションサーバならメモリ上にJVMが常駐しているからプログラムの起動とは非同期にできるが、PHPは同期で処理している。そのため、PHPではGCが起動したときにプログラムの実行時間が長ってしまう。よって、大規模サイトになったときには必然的にセッションファイルが扱うセッションが多くなるため、GCにかかる時間が長くってしまうから、同期
この記事をブックマークする : アマノです。 セッションを特殊な方法で保存したい場合に呼び出す session_set_save_handler() 関数ですが、 この関数を使用している場合にリダイレクトを使用すると 正常にセッションを処理してくれない場合があるようです・・・ 通常はリダイレクトした場合、リダイレクト元のページで open read write close で処理され次にリダイレクト先のページで同じように処理されますが どういうわけか 元ページのopen,read 先ページのopen,read 元ページのwrite,close 先ページのwrite,close という順で処理される事があるようです。 こうなると前ページでのセッション変更が読み込めず セッションの中身をうまく渡すことができなくなります。 この問題が起きるようであればリダイレクトしている直前に session_
携帯だとSessionの管理がめんどい。 なので、symfonyに実装されているデータベースに保存する方法でSession管理をする。 ■参考 1.http://tryout-lab.com/2008/06/09/47.html 2.http://tryout-lab.com/2008/06/10/48.html session.use_cookies = 1 session.use_trans_sid = 0 は、htaccessで下記のように設定 php_flag session.use_trans_sid Off php_flag session.use_cookies On symfony の sfMySQLSessionStorageを拡張 ↓ class myMobileSessionStorage extends sfMySQLSessionStorage{ public f
ドコモだとCookieが使えず、セッション管理ができない。 そこで、URLにセッションIDをくっつく設定が必要になる。 具体的には、下記のようにiniをセットしなきゃいけない。 ini_set('session.use_trans_sid', TRUE); ini_set('session.use_cookies', FALSE); symfonyで設定ファイルなどで簡単に設定できるか調べてみた。 すると、セッション管理するクラスがあるので、そのクラスをオーバーライドして、 設定ファイルにオーバーライドしたクラスを使うように記述すればよいことが分かった。 クラスのオーバーライド myMobileSessionStorage クラスを作成して、libの下に配置 class myMobileSessionStorage extends sfSessionStorage{ public func
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く