CXLI. PostgreSQL セッション保存ハンドラ

導入

注意: この拡張モジュールは Windows 環境では利用できません。

このモジュールは、PostgreSQL をストレージとして使用する session モジュール用にセッション保存ハンドラを提供するものです。 ユーザレベルの セッション保存関数 - session_set_save_handler() を使用することも可能ですが、 このモジュールは C で書かれており、PHP で書いた保存ハンドラより約 2 倍 高速です。

PgSQL セッション保存ハンドラは あらゆる規模の Web サイトを対象に 設計されており、いくつかの進んだ機能を持っています。

セッションテーブルを自動的に作成します。
セッションテーブルの vacuum を自動的に行います。
効率的なガベージコレクションを行います。
複数の PostgreSQL サーバをサポートします。
データベースサーバの自動フェイルオーバー(スイッチング)を行います。
複数の PostgreSQL サーバを稼動させている場合、自動的に ロードバランシングが行われます。
UPDATE のショートカット機能を有します。

要件

すくなくとも PHP >= 4.3.0 、およびデータベースサーバとして PostgreSQL >=7.2.0 が必要です。また、PostgreSQL 7.2.0 以降の libpq(とそのヘッダファイル) および libmm(とそのヘッダファイル) が必要です。

インストール手順

簡単なインストール手順

  • tar.gz アーカイブを php4/ext に展開します (最新の正式リリースは、SourceForge の PHP Form Extension Project にあります)。

  • 新しいディレクトリを session_pgsql のように呼ぶと すると、それを session_pgsql という名前にする 必要があります(PHP モジュールとして構築する場合を除きます)。

  • PHP 4 では ./buildconf を実行します。

  • configure --with-session-pgsql (およびその他のオプション)を実行します。

  • make; make install

実行時設定

php.ini の設定により動作が変化します。

PostgreSQL セッション保存ハンドラは、まだ開発中です。設定の詳細に ついては、配布物に含まれる README ファイルを参照して下さい。

テーブル定義

セッションテーブルの定義
CREATE TABLE php_session (
  sess_id            text,
  sess_name          text,
  sess_data          text,
  sess_created       integer,
  sess_modified      integer,
  sess_expire        integer,
  sess_addr_created  text,
  sess_addr_modified text,
  sess_counter       integer,
  sess_error         integer,
  sess_warning       integer,
  sess_notice        integer,
  sess_err_message   text,
  sess_custom        text
);

CREATE INDEX php_session_idx ON php_session USING BTREE (sess_id);

警告

HASH 形式の INDEX を使用する際は、 サーバの負荷が非常に高くなった際にデッドロックの 問題が発生することがあります。通常の操作ではデッドロックが起こることは まずありませんが、起こることもありえます。インデックスには HASH 形式を使用しないでください

すべてのフィールドが定義されている限り、セッションテーブルを 変更することも可能です。

アプリケーション変数テーブルの定義
CREATE TABLE php_app_vars (
  app_modified       integer,
  app_name           text,
  app_vars           text
);

連絡先

現時点で、この拡張モジュールの開発者は、開発を継続する時間の余裕 はありません。将来的により多くの機能を実装する予定です。

コメント、バグ修整、拡張、またはこのモジュールの開発を援助したい 場合には yohgaki@php.net までメールをください。いかなる援助も歓迎します。

目次
session_pgsql_add_error -- エラーカウントを加算し、直近のエラーメッセージを設定する
session_pgsql_get_error -- エラーの数および直近のエラーメッセージを返す
session_pgsql_get_field -- カスタムフィールドの値を取得する
session_pgsql_reset -- セッションデータベースサーバとの接続をリセットする
session_pgsql_set_field -- カスタムフィールドの値を設定する
session_pgsql_status -- 現在の保存ハンドラの状態を得る