将PHP 5.3会话存储到PostgreSQL 8.4中

时间:2011-09-21 14:59:37

标签: php postgresql session

我正在使用CentOS 6.0 Linux 64位和库存包:

# rpm -qa|grep php
php-cli-5.3.2-6.el6_0.1.x86_64
php-5.3.2-6.el6_0.1.x86_64
php-xml-5.3.2-6.el6_0.1.x86_64
php-pgsql-5.3.2-6.el6_0.1.x86_64
php-pear-1.9.0-2.el6.noarch
php-pdo-5.3.2-6.el6_0.1.x86_64
php-common-5.3.2-6.el6_0.1.x86_64

# rpm -qa|grep postgres
postgresql-devel-8.4.7-1.el6_0.1.x86_64
postgresql-docs-8.4.7-1.el6_0.1.x86_64
postgresql-libs-8.4.7-1.el6_0.1.x86_64
postgresql-8.4.7-1.el6_0.1.x86_64
postgresql-server-8.4.7-1.el6_0.1.x86_64

并希望更改我自己的PHP脚本 $ _ SERVER ['REMOTE_USER'] 使用 $ _ SESSION , 但是还没有任何PHP会话经验。

我希望将(相当广泛的)用户数据存储到其中 PostgreSQL只保存$ _SESSION中的“用户ID”。

但是this doc说“此扩展程序被视为无法维护且已死亡”。

有人有什么建议吗,在这做什么?

也许我可以自己将会话数据保存到数据库中(以及如何)?

2 个答案:

答案 0 :(得分:1)

您可以使用自己的:http://php.net/manual/en/function.session-set-save-handler.php

覆盖PHP的会话保存/加载处理程序

这使您可以将会话数据保存到数据库中,或者根据需要将其打包到石碑上。只要您的代码正确地发送/接收会话数据,底层存储介质/数据库的选择就无关紧要了。

答案 1 :(得分:0)

简单版本:

sql("INSERT INTO sessions (session,userid) VALUES('".json_encode($_SESSION["toomuchuserinfo"])."','".$_SESSION['userid']."');");
$r=sql("SELECT session FROM sessions where userid='".$_SESSION['userid']."';");
$_SESSION["toomuchuserinfo"]=json_decode($r[0][0]);