PHP ::: Speed Test ::: $ _SESSION ::: unset()与空白字符串

时间:2012-01-26 05:25:48

标签: php session

我有一个表单,其中包含几个相当活跃的字段。据说有一个验证部分。

用户POST和值存储在$ _SESSION变量中。

失败时,$ _SESSION变量被清除,这些变量不正确。我之所以这样做,是因为表单echo回显了之前仍然正确的值,不便于用户。

哪个更快:

$_SESSION['variable']="";

PRO - >每张表格POST的操作较少 CON - > Server在任何给定点存储更多$ _SESSION变量。

unset($_SESSION['variable']);

PRO - >每个表单POST的更多操作 CON - > Server在任何给定点存储较少的$ _SESSION变量。

思想?

4 个答案:

答案 0 :(得分:4)

您应该unset()将其设置为空字符串意味着会话变量仍然存在并指向内存中的某个位置。

你不应该担心这个阶段会更快,只要想想最能传达代码意图的内容。

答案 1 :(得分:2)

通过将session var设置为空字符串,我不确定“每个表单帖子的操作少”是什么意思。这只是一个时髦的镜头,但我猜你正在做这样的事情......

foreach( $_POST as $k => $v ) {
  if( $v == 'correct value' ) {
    $_SESSION[$k] = $v;
  } else {
    if( isset($_SESSION[$k] ) unset($_SESSION[$k] );
}

如果没有,那么你可能应该是。这样,有史以来唯一设置的会话变量(因此耗尽资源)将成为有效答案,并且如果他们重新提交表单并获得之前正确的答案错误,它将转储它。然后你可以再做另一个foreach来转出会话变量以供用户阅读。

正如一般的经验法则,取消设置变量比将其设置为“”更好,因为它使用较少的资源将其从内存中删除。如果需要,重新设置它所需要的纳秒左右可以忽略不计,除非你每分钟都在谈论成千上万的请求,而且听起来并不像你那样。

至于它是否绝对至关重要?咩。我工作的公司有会话变量,当我执行var_dump时,这些变量实际上是页面长。至少1000个对象的实例,我们的服务器每月需要数百万个独特的点击量,所以除非你谈论的不仅仅是这个,否则我怀疑它是否真的会给任何人带来明显的差异。

答案 2 :(得分:1)

使用unset($_SESSION['variable']);完全清除它。

顺便说一句,如果您不重定向页面,则无需在会话中存储用户输入。

答案 3 :(得分:1)

我同意Alex的观点。是的,您必须重新初始化SESSION变量,但是根据php解释器的编写方式,它们可能会预分配内存,以便内存初始化非常快,使其与首先重置字符串一样快。如果有什么我只是为了清晰起见。