PHP マニュアル
前のページ |  | 次のページ

# CXLVI. 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 までメールをください。いかなる援助も歓迎します。

前のページ | ホーム | 次のページ
sesam_settransaction | 上に戻る | session_pgsql_add_error