上面说的是什么。不出所料,我找不到明确的答案。
我只是想知道在脚本中多次调用它会导致问题。
答案 0 :(得分:3)
引用the manual:
从PHP 4.3.3开始,在会话结束后调用
session_start()
之前启动将导致级别E_NOTICE
的错误。
另外,第二次会议的开始将被忽略。
所以,它不会做太多 - 除了提出通知,这表明存在某种问题;这意味着你不应该多次调用这个函数。
编辑@hakre的评论后:为了确保,我已经测试了以下部分代码,在确认错误和通知后获取两次调用session_start()报道:
<?php
ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);
session_start();
session_start();
我收到以下通知:
Notice: A session had already been started - ignoring session_start() in /.../temp.php on line 6
答案 1 :(得分:0)
不,session_start
不是幂等的,它在语言的运行时状态中具有依赖性。
您通常可以多次调用它,这可能会给您一些警告或错误,但是,如果您在调用之间更改会话状态和/或配置,则该函数的行为将不会相同。 / p>
当调用函数改变会话状态时,通过对幂等的非常严格的视图,它完全不是。
此外,重要的是要注意,与$_SESSION
对应的该函数的结果仍然由关联的商店,会话名称和会话ID定义。
答案 2 :(得分:0)
会导致错误(会话已经开始)。
但是如果你忽略这个错误,它就是幂等的。
在PHP 5.4中,我们将获得: http://nl3.php.net/manual/en/function.session-status.php