2007年10月11日

MySQLで、timestampのカラムを定義するとき、「ON UPDATE」というものがあることを、「PHP frameworks, Part 1: Getting started with three popular frameworks」で知ったので、メモです。

MySQL AB :: MySQL 5.1 リファレンスマニュアル :: 10.3.1.1 TIMESTAMP MySQL 4.1での性質より、引用。

DEFAULT CURRENT_TIMESTAMP と ON UPDATE CURRENT_TIMESTAMP 条項の両方で、カラムはそのデフォルトに現在のタイムスタンプを持ち、それは自動的に更新されます。

定義の例より引用:

CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP);

2007年10月10日

CakePHP のおいしい食べ方: IBMでPHP3大フレームワーク記事スタート」で、次の記事が紹介されていました。

PHP frameworks, Part 1: Getting started with three popular frameworks

symfonyは、次の記事を見て、個人的に選択することはないかも、と思っていますが、上記、比較記事を今後楽しみにしたいと思います。

PHPベンチマーク: Zend Framework vs Symfony vs CakePHP vs CodeIgniter vs PHP on TRAX - 徒然なるままにBlog
PHPフレームワークのベンチマーク比較:phpspot開発日誌

2007年10月7日

Zend_Session::rememberMe()の使用に関してのメモです。

Zend Framework: Documentationに、次のような記述があります。

セッションの開始前に Zend_Session::rememberMe() を使用すると、セッションクッキーの有効期限を制御することができます。

Zend_Session::start()の後に、Zend_Session::rememberMe() を使用しても、クッキーの有効期限が変化するようです(TODO:詳細調査)。

Zend_Session::rememberMeを使用すると、session_regenerate_id(true)がコールされています(ZendFramework-1.0.1)。
session_regenerate_id(true)をコールすると、session_set_cookie_paramsがsession_startの後でもクッキーの有効期限が変化するようです(PHP 5.2.3)。

Firefox2とInternet Explorer6のセッション関連の振る舞いの違い

Zend_Session::rememberMeを使用しない場合

Firefox2は、ブラウザを閉じても、セッションが継続するようです(クッキーの有効期限は、「セッション終了時」となっています。)(TODO:詳細調査)。
(Firefox2のクッキーに関する設定は、[オプション]ダイアログの[プライバシー]タブの[Cookie を保存する期間]を「サイトが指定した期限まで」に設定しています。)

Internet Explorer6は、ブラウザを閉じると、セッションは継続しません。

Zend_Session::rememberMeを使用した場合

Firefox2は、クッキーの有効期限が設定され、その有効期限の間は、ブラウザを閉じても、セッションが継続するようです。

Internet Explorer6も、ブラウザを閉じても、セッションが継続しました。

その他のメモ

remember_me_secondsに設定する値

Zend FrameworkのAPI Guideに、次の記述があります。

Due to clock errors on end users’ systems, large values are recommended to avoid undesirable expiration of session cookies.

大きい値がどのくらいの秒数かわかりませんが、100程度の値だとInternet Explorer6では、セッションをまったく継続できないようです。

2007年10月3日

Smartyのアウトプットフィルタのメモです。

ふと、Smartyのポストフィルタとアウトプットフィルタがいつ適用されるのか気になりました。

Smarty マニュアルの次のページに記述がありました。
Smarty

テンプレートが display() 又は fetch() を経由して呼び出された時、出力は1つ又は複数のアウトプットフィルタを通して送られます。

ポストフィルタについては、次のページ。
Smarty

.htaccessの設定で、Strict Standardsメッセージを表示しないようにするメモです。
display_errorsがオンの場合、Strict Standards以外のサポートされる全てのエラーと警告は、表示されます。

PHPのバージョンが5.2より前の場合
php_value error_reporting 2047
PHPのバージョンが5.2.xの場合
php_value error_reporting 6143
PHPのバージョンが5.3以降、6より前の場合
php_value error_reporting 8191

PHPのバージョンが6の場合、E_STRICTが含まれるそうなので、Strict Standardsメッセージは、表示されます。

参考

エラー処理およびログ記録関数
エラー処理およびログ記録関数 - PHPプロ!マニュアル