大家好, 这主要是一个校对问题,如果我可以这样说的话。
所以,我需要为网上商店/电子商务网站创建持久会话。持续超过指定时间的会话并不是一个真正的问题,但是最后一次点击后的24小时,这个问题非常重要。
为什么:要快速查看购物车状态,上次访问过的网页,税务和货币选择等而不查询,更不用说在每个页面请求上写入数据库或其他存储机制。购物车和浏览历史很复杂,足以存储在会话中,语言,货币等也可以是cookie。 我们的大多数网站都被缓存为html,并且只有少数元素(如购物车内容)被绑定到已完成的页面。我们有非常好的服务器响应时间,我希望保持这种方式,避免任何太重的事情,特别是对于购物车中没有任何东西的用户。
我在StackOverflow和Google上经历了不少帖子,以便对此有一个基本的了解。大多数结果都是关注并确保会议在一段时间后会在任何情况下结束。这种情况恰恰相反。
因此,PHP在ini中有一些会话设置,其中三个是最重要的:
session.cookie_lifetime :这是PHPSESSID -cookie的生命周期,它使PHP能够获取相应的会话。默认为零,这意味着cookie在被销毁时被销毁 浏览器关闭。因此它可以存活一毫秒或两年 如果设置为零。
将此值设置为整数值将使cookie过期 从首次设置开始。在会话开始的后续页面加载中不会转发生命周期。
所以这是我提出的一个例子“会话标题”。它至少应该确保会话文件从第一个会话开始存储至少$ lt秒,并且该脚本的最后执行的会话cookie $ lt秒。在问题评论中,会话被写入,在我的想法中会导致文件时间得到更新,因此自最后执行脚本以来将会话到期时间推到$ lt。
<?php
/**
* Example "header" to start a session in a simple environment
*/
// Lifetime setting in seconds
$lt = 1440;
// Set maxlives to $lt
ini_set('session.gc_maxlifetime', $lt);
ini_set('session.cookie_lifetime', $lt);
// Save sessions in a different directory than other sessions. The gc
// will run on a probability base on each session start and clean the default
// directory. If our (longer) sessions are saved in a shared session dir
// for other PHP scripts which have a shorter expiry, our files will also be
// removed.
// If we run a single site, use php.ini to set the above max lives,
// or are the only ones using sessions, we can omit this directive.
ini_set('session.save_path', '/var/www/mysite/separate-session-dir');
// Start the session AFTER setting the parameters
session_start();
// Update the cookie expiration on a page load.
// This will simply overwrite the system-set session cookie.
setcookie(session_name(),session_id(),time()+$lt, '/');
// QUESTION: Would this forward the session FILE lifetime by writing to it.
$_SESSION['random-field'] = uniqid();
// Do what you really meant to do with your script.
因此。这里是。这是否可以作为一种简单的方法来确保会话至少持续$ lt秒,或者我忽略了什么?
我目前在我们的服务器上运行它,没有ini_sets和保存路径,因为它们是在php.ini中设置的。 cookie部分似乎很容易通过关闭浏览器进行验证并返回以查看是否清空了购物车,但文件部分更难以验证,我希望您对此有所了解。
PS。对于填充电子商务/网上商店标签感到抱歉,但我搜索了几个小时的帖子,从这个角度来看待事情。