a-blog cms PHP API Reference

DatabaseHandler
in package
implements SessionHandlerInterface

Table of Contents

Interfaces

SessionHandlerInterface

Constants

LOCK_TIMEOUT  = 50
アドバイザリロックのタイムアウト秒数。 MySQL の innodb_lock_wait_timeout の既定値に合わせている。

Properties

$lockName  : string|null
現在取得しているアドバイザリロック名(未取得時は null)。

Methods

close()  : bool
destroy()  : bool
gc()  : mixed
generateLockName()  : string
アドバイザリロック(MySQL GET_LOCK)のロック名を生成する。
open()  : bool
read()  : mixed
write()  : bool
acquireLock()  : void
このセッションIDに対するアドバイザリロックを取得する。
getLockNamespace()  : string
ロック名の名前空間(インストール識別子)を取得する。
isValidSessionId()  : bool
セッションIDとして安全かどうかを検証する
releaseLock()  : void
取得中のアドバイザリロックを解放する。

Constants

LOCK_TIMEOUT

アドバイザリロックのタイムアウト秒数。 MySQL の innodb_lock_wait_timeout の既定値に合わせている。

private mixed LOCK_TIMEOUT = 50

Properties

$lockName

現在取得しているアドバイザリロック名(未取得時は null)。

private string|null $lockName = null

Methods

destroy()

public destroy(mixed $id) : bool
Parameters
$id : mixed
Tags
inheritDoc
Return values
bool

gc()

public gc(mixed $maxlifetime) : mixed
Parameters
$maxlifetime : mixed
Tags
inheritDoc
Attributes
#[ReturnTypeWillChange]

generateLockName()

アドバイザリロック(MySQL GET_LOCK)のロック名を生成する。

public static generateLockName(string $sessionId, string $namespace) : string

GET_LOCK はMySQLサーバ全体で共有され、ロック名は最大64文字という制約がある。 そのため次の性質を満たすよう、名前空間とセッションIDを連結してハッシュ化する。

  • 64文字以内('acms_sess_' 10文字 + sha1 40文字 = 50文字)
  • 安全な文字種のみ([a-z0-9_])
  • 同一MySQLサーバを複数インストールで共有しても衝突しない(名前空間で分離)
Parameters
$sessionId : string

セッションID

$namespace : string

インストールを識別する名前空間(DB名・テーブルプレフィックス等)

Return values
string

open()

public open(mixed $savePath, mixed $sessionName) : bool
Parameters
$savePath : mixed
$sessionName : mixed
Tags
inheritDoc
Return values
bool

read()

public read(mixed $id) : mixed
Parameters
$id : mixed
Tags
inheritDoc
Attributes
#[ReturnTypeWillChange]

write()

public write(mixed $id, mixed $data) : bool
Parameters
$id : mixed
$data : mixed
Tags
inheritDoc
Return values
bool

acquireLock()

このセッションIDに対するアドバイザリロックを取得する。

private acquireLock(string $sessionId) : void

ロックを取得できなくてもサイトは停止させない(フェイルオープン)。

Parameters
$sessionId : string

getLockNamespace()

ロック名の名前空間(インストール識別子)を取得する。

private getLockNamespace() : string
Return values
string

isValidSessionId()

セッションIDとして安全かどうかを検証する

private isValidSessionId(string $id) : bool
Parameters
$id : string
Return values
bool

releaseLock()

取得中のアドバイザリロックを解放する。

private releaseLock() : void

        
On this page

Search results