anullvalue / phpsessiondbpg
PHP8.2+ 使用 PostgreSQL 的 Session 处理器
v0.06
2024-03-04 23:18 UTC
Requires
- php: >=8.2.0
- ext-pgsql: *
This package is auto-updated.
Last update: 2024-09-05 00:18:38 UTC
README
许多解决方案/项目可能不需要使用数据库支持的 PHP 会话处理。但如果您的项目确实需要,并且您的项目无论如何都需要 PostgreSQL 9.5+,我为您编写了这个解决方案。
要求
-
PostgreSQL 9.5+(必须支持 "ON CONFLICT DO UPDATE")
-
PHP 8.2+
-
PostgreSQL 连接(通过 pg_connect,而不是 PDO)
-
创建如下 "session_data" 表(表名(但不包括模式)可能不同;这里只是一个示例)
CREATE TABLE public.session_data ( id character varying NOT NULL, data character varying NOT NULL, touch_epoch integer NOT NULL, PRIMARY KEY (id) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; ALTER TABLE public.session_data OWNER to postgres; CREATE INDEX session_data__id ON session_data(id); CREATE INDEX session_data__touch_epoch ON session_data(touch_epoch);
示例代码
$dbconn = pg_connect("your connection string here");
require_once 'PHPSessionDbPg.php'; // required only if you are not autoloading this library
$sessions_handler = new \aNullValue\PHPSessionDbPg\PHPSessionDbPg($dbconn,'session_data', 86400);
session_set_save_handler($sessions_handler, true);
session_name('MySessionName'); //optional
session_start();
$_SESSION['something'] = 'foo';
$_SESSION['something_else'] = 'bar';
echo session_id(),'<br/>',$_SESSION['something'],'<br />',$_SESSION['something_else'] ;
杂项
Inspired by https://github.com/iKevinShah/PGSessions