哪种方式是在 php 中存储会话的最有效方式(用于登录或用户相关数据)?
最好的事情是数据库还是使用 php 中内置的 $_SESSION?对于更大的网站和总体速度,哪一个最有效?
哪种方式是在 php 中存储会话的最有效方式(用于登录或用户相关数据)?
最好的事情是数据库还是使用 php 中内置的 $_SESSION?对于更大的网站和总体速度,哪一个最有效?
这是一个非常糟糕的问题,因为它没有定义一个单一的答案,但我会继续尝试满足您的需求
首先将进行检查,因此如果用户名不等于数据库或电子邮件中的一个,并且一旦您可以检查数据库中的用户名并成功为其创建功能,请进行适当的错误检查
你需要有一个用户登录,如果凭据是真实的,那么
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 你会在两天内看完,但在这个问题上会有很好的基础
我希望我有所帮助
绝对没有理由相信内置的 PHP 机制很慢或很糟糕。它正在写入文件,非常适合大约 90% 的网站使用的单服务器场景,它经过全面测试并且可以正常工作。内部工作确实使用已编译的 C 语言,以便通过此存储获得最佳性能。
无论您自己做什么,都必须用较慢的 PHP 实现,或者您必须从事用 C 语言创建 PHP 会话保存处理程序的业务。
因此,如果您真的开始使用前面的负载均衡器进行多服务器设置,并且没有配置粘性,那么您才需要一个可从所有网络服务器访问的会话存储。已经有很多解决方案:
Memcached - 安装 memcached 扩展时,还有memcached 会话保存处理程序。
你也可以试试 Zend Server 自带的 Zend Session Cluster。
您可以尝试编写自己的会话处理程序,但您必须确保正确锁定!否则并发请求将覆盖彼此的会话数据。这就是迄今为止我看到的大多数代码都失败的地方,即使是像Symfony 2 这样的成熟框架仍然使用非原生存储。
只有在使用内部会话保存处理程序(并且编码正确)时,PHP 才会自行锁定,因此实际上每个会话 ID 只能运行一个脚本。所有其他人都停止了对 的调用session_start()
。
如果您认为现有的保存处理程序都不符合您的要求,那么您必须自己实现一些东西,但您的问题听起来不像您已经习惯了集群网络服务器环境。
关于“什么是最有效的”?有效还是高效?还是高性能?还是最快的?没有人会知道您是否无法命名要测量的数字!以及如何测量。
即使知道了,也根本无法事先知道。试想一下有人说“使用数据库,这总是更快”,然后您最终在共享托管系统中遇到了一个糟糕的提供程序,该系统的数据库系统过载,完全没有性能,您会说“这不可能数据库比文件快” - 你是对的。出于同样的原因,说比不使用数据库更快也是一个谎言。
衡量绩效!改变一些东西,看看它是否更快。如果是,请留在那里,否则返回。