我在每个文件的顶部运行以下代码。我需要if语句吗?我已经使用了这个实现很长一段时间,并且很可能在我第一次学习时获得它。 我现在的理解是,我不需要if语句,但如果这是一个好的做法,我想澄清一下。
<?php
// Inialize session
if (!isset($_SESSION)) {
session_start();
}
答案 0 :(得分:1)
严格来说,if
确实不是必需的。但是,我会说保持if
无论如何都是一种好习惯
毕竟,isset
是一种语言结构,而session_start
是一种函数调用。无论你怎么看,函数调用都比语言结构慢。
通过添加if (isset($_SESSION))
支票,您可以避免调用session_start
之类的功能,或者其他人建议session_id
或session_status
太多次。
只需查看语句,并计算函数调用:
if (isset($_SESSION))
//if, language construct
//isset, language construct
//$_SESSION, lookup of super-global
//----------------------------------
//Total function calls: 0
与:相比:
if (session_status() == PHP_SESSION_NONE)
//if, language construct
//session_status(), function call
//PHP_SESSION_NONE, lookup of global, predefined constant
//----------------------------------------------------------
//total function calls: 1
当然还有:
if(session_id() == '')
//if, lang construct
//session_id(), function call
//'' string consant
//-------------------------------
// 1 function call
在所有3种情况下,如果if
评估为true,则会发生session_start
函数调用。您现在拥有的内容将导致1次函数调用一次,替代方案将导致两次函数调用一次,然后每次调用1次函数。
就个人而言,我建议您研究避免所有session_start
次呼叫的需要的方法。任何体面的框架,通过.htaccess
重写规则,设法通过单一入口点引导所有请求(大多数时候,这是一个index.php
文件)。在那里,你可以致电session_start
。然后,其他脚本不必费心这样的代码。
答案 1 :(得分:0)
您可以使用这些方法中的任何一种而不是您的代码。检查会话是否设置是一个好习惯。它将有助于防止不需要的函数调用。一次检查优于一个不需要的函数打电话。,这样你就可以减少执行时间。
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
或者
if(session_id() == '') {
session_start();
}
答案 2 :(得分:-1)
您的if语句是不必要的。
检查会话是否已启动:
if(session_id() == '') {
//not started
session_start();
}
else {
// session has been started
}