PHP存储会话

时间:2013-06-15 22:20:23

标签: performance session storage php

这将是在php中存储会话的最有效方式。(用于登录或用户相关数据) 最好的事情是数据库还是在PHP中使用内置的$ _SESSION? 一般来说,对于更大的网站和速度,哪一个最有效?

2 个答案:

答案 0 :(得分:0)

这是一个非常糟糕的问题,因为它没有定义一个单一的答案,但不适合继续并尝试满足您的需求

首先会有一个检查,如果用户名不等于数据库中的一个 或者电子邮件,并在您可以检查数据库中的用户名并成功为其创建函数后执行propper错误检查

你需要有一个用户登录,如果凭据是真实的那么

 session_start();

    function logged_in()
    {
    return (isset($_SESSION['user_id'])) ? true : false;
    }





if ($login === false)
        {
            $errors[] = 'Wrong username/password combination';
        } else 
        {
            $_SESSION['user_id'] = $login;
            header('Location: index.php');
            exit();

尝试这个系列是高度推荐的

https://www.youtube.com/watch?v=9kyQGBABA38&list=PLE134D877783367C7你会在两天内看完它,但会在这个问题上有一个良好的基础

我希望我帮助

答案 1 :(得分:0)

绝对没有理由相信内置的PHP机制是慢还是坏。它正在写入文件,这对于大约90%的网站使用的单服务器场景是完美的,它经过了彻底的测试和工作。内部工作确实使用编译的C语言来获得此存储的最佳性能。

无论你做什么,你自己必须用PHP实现,这要慢一些,或者你必须开始用C创建PHP会话保存处理程序。

因此,如果你真的开始使用前面的负载均衡器进行多服务器设置,并且没有配置粘性,那么你需要一个可以从所有网络服务器访问的会话存储。现有很多解决方案:

Memcached - 安装memcached扩展时,还有memcached session save handler

您还可以尝试Zend Server附带的Zend会话群。

您可以尝试编写自己的会话处理程序,但必须确保正确锁定!否则,并发请求将覆盖彼此的会话数据。到目前为止,我所看到的大多数代码都失败了,甚至是成熟的框架,如Symfony 2 still do with non-native storage

只有在使用内部会话保存处理程序(并且编码正确)时,PHP才会自行锁定,因此每个会话ID实际上只能运行一个脚本。所有其他人在致电session_start()时停止。

如果您认为现有的存储处理程序都不符合您的要求,那么您必须自己实现一些功能,但您的问题听起来并不像您已经习惯了群集的Web服务器环境。

关于“什么是最有效的”?有效还是高效?还是表现好?还是最快的?没有人会知道你是否不能指出要衡量的数字!以及如何衡量。

即使知道这一点,也无法事先知道。试想有人说“使用数据库,这总是更快”,然后你最终在共享主机系统中遇到一个糟糕的提供者,数据库系统过载,完全没有性能,你就像“不是这样的数据库比文件更快“ - 你是对的。出于同样的原因,说比不使用数据库更快也是一个谎言。

测量性能!改变一些东西,看看它是否更快。如果是,请留在那里,否则回去。