http://d.hatena.ne.jp/kwatch/20100613/1276385931
PHPは唯一、セッション管理を内蔵してる(意訳)
という主張がありました。言われてみればその通り。
pythonについては、先日pythonカンファレンスに出てみましたが、「フツーwsgi」らしいです。cgiの話なんか誰もしません。そういう状況ではPHP/Perlにしちゃうのでしょうか。cgi.pyの存在は知らない人の方が多いかもしれませんね。って言うか筆者はpythonでCGIを作る気がないので存じませんでした。
この記事を最後まで書いちゃってから気づいたのですが
- PHPはmod_php
- しかしpythonはcgi.py
- しかしrubyはcgi.rb
比較するなら、
- PHPはmod_phpを
- pythonはmod_pythonを
- rubyはmod_rubyを
筆者はperl5で、クッキー&セッションを自作して、酷い目にあったクチなんで、PHPの$_SESSIONには感涙したものです。しかも、クッキーが使えなかったら、表示する筈のHTMLタグに介入して、PHPSESSID=とかパラメタを勝手に付加する。というのも画期的ですね。これで助かってるガラパゴスケータイゲーム業者も多いはず。
筆者は、公私共に、appengineで色々運用していますが、セッションが無くて困ったことがありません。何でだろな、と思ったら、ユーザ認証ベースで作ってるからですね。そういう案件だから、ってのはその通り。
セッションが必要な典型的なケースは、ショッピングバスケットでしょうか。ユーザ認証があれば大丈夫ですよ。って言おうとしたら、未登録の人が未登録のまま買い物をするケースが結構ありますね。買い物客としては筆者もよくやります。そういう時にはセッションは有った方が良い。
appengine/wsgiのお作法では、セッションはデコレータとして実装して、後付けした方が美しい気がします。それが出来るのがpythonの利点ですし。
うまく行ってるか判りませんが、まさしくデコレータで自作した人は居るらしい。
https://sites.google.com/site/yomusu/googleappengine/oresession
http://d.hatena.ne.jp/coiledcoil/20110212/1297491800
mod_pythonにはセッション機能があるようですね。
http://www.python.jp/doc/contrib/modpython/pyapi-sess.html
djangoもセッション機能を内蔵してるらしい。
http://www.djangobook.com/en/2.0/chapter12/
ただしdjangoは、mod_python/wsgiの2択らしいんで、cgi.pyは使ってませんね。
総論としては、pythonでcgi.pyを使ってる人は変態。