2011-08-21 119 views
1

我涉足PHP。在我完成的项目中,我总是使用数据库和cookie来处理会话。我见过“会话功能”,如session_start()也被用于其他来源。我只是好奇,哪个更好?我应该使用这个还是另一个?PHP会话与数据库会话

回答

1

嗯,有,我已经使用过退房时间三种方式:

  1. 传统$_COOKIE三通,也就是说你实际使用Cookie来存储值
  2. “新” $_SESSION三通,其中您使用的关联数组可能依赖于一个Cookie
  3. $_SESSION与数据库结合使用,可以在基于用户的基础上控制会话。

我更喜欢使用选项#3,因为它使我能够“即时”更改会话,并且更轻松地跟踪登录用户。

选项#3将通过以下方式(半准)发挥出来:

<?php 
    //Start the session 
    session_start(); 

    //Get the session data 
    $_SESSION['user'] = retrieveSessionDataFromDB($_SESSION['user']['unique_id']); 

    //Profit 
?> 
+0

我使用一个包含sesid的cookie。我使用sesid(检查useragent,时间等),以及检查名为“ses”的mysql表中的对应行。有点类似于你的#3 – Lienau

+0

我觉得这是一个很好的解决方案,因为你实际上可以从一个集中点(即管理中的会话列表)控制会话。 – ninetwozero

1

我建议使用内置的会话函数,因为您不必手动编写所有会话处理代码。默认情况下,会话状态存储在一个文件中,但您也可以更改它,例如数据库使用session_set_save_handler

+0

固定链接:[session_set_save_handler](http://www.php.net/session_set_save_handler) – jjt

0

我绝对会使用PHP会议上,一对夫妇的原因

  1. 第一个原因是,使用本地方法可以轻松管理PHP会话。还有许多库允许非常强大的会话管理,如Zend_Session

  2. PHP会话更具可扩展性。一旦你的应用程序开始增长,使用MySQL作为数据存储可能是你最大的瓶颈。将会话存储在内存中将允许您水平缩放以进行补偿。存储在数据库中可能会给数据库带来比它需要更大的压力。

通常情况下,虽然,它没有多大意义的小应用程序,但是如果你计划增加我肯定会使用PHP会议。