Руководство по PHP
Пред. |  | След.

# CXLV. PostgreSQL Session Save Handler

# Введение

> Замечание: Для Windows-платформ это расширение недоступно.

This module provides an additional session save handler for the session module using PostgreSQL as a storage system. A `user-level` session storage function may also be used - session_set_save_handler(), but this module is written in C and therefore could be twice as fast, compared to a session save handler written in PHP.

Session PgSQL is designed to scale any size of web sites and offers some advanced features:

session tables are created automatically
automatic session table vacuum
better garbage collection
multiple PostgreSQL servers support
automatic database server failover (switching)
automatic database server load balancing if there are multiple PostgreSQL servers.
short circuit UPDATE

# Требования

You need at least PHP >= 4.3.0, and PostgreSQL >=7.2.0 as database server. `libpq` that comes with PostgreSQL 7.2.0 or later (and header files to build) and libmm (and header files).

# Установка

Short installation note:

- Untar the `tar.gz` archive into `php4/ext` (Latest official releases can be found at SourceForge PHP Form Extension Project)

- If the new directory is now called something like `session_pgsql`. You should name it to `session_pgsql` (except you only want to build it as self-contained php-module).

- Run `./buildconf` in php4

- Run `configure` `--with-session-pgsql` (and your other options)

- `make; make install`

# Настройка во время выполнения

Поведение этих функций зависит от установок в `php.ini`.

PostgreSQL session save handler is still under development. Refer to the `README` file in the source distribution for configuration details.

# Table definitions

Session table definition

    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);

Внимание
If you use `HASH` for `INDEX`, you'll have a deadlock problem when the server load is very high. Even if it's unlikely to have a deadlock under normal operation, it can occur. Do not use `HASH` for `INDEX`.

You may change the session table as long as all fields are defined.

Application variables table definition

    CREATE TABLE php_app_vars (
      app_modified       integer,
      app_name           text,
      app_vars           text
    );

# Contact Information

I have at the moment not very much time to further develop this extension. I will implement more and more features in the near future.

If you have comments, bug fixes, enhancements or want to help developing this, you can drop me a mail at yohgaki@php.net. Any help is very welcome.

Пред. | Начало | След.
sesam_settransaction | Уровень выше | session_pgsql_add_error