如何在
PHP中重新打开会话,而不会收到头已发送警告?
在设置了我喜欢设置的所有会话变量后,我关闭与session_write_close()的会话.我这样做,因为只要会话打开,同一个客户端可能只有一个活动连接.但我喜欢有多个并行的.
但是,如果我稍后再设置一个会话变量,我需要再次打开与会话session_start().这是有效的,但是由于我已经向客户端发送了代码,所以打印出“已发送的信头”警告.为什么要再次设置cookie? Cookie已经设置好了.只有我需要的是再次访问服务器上的会话文件.
嗯,我可以压制他们.但是是否有一种重新打开会话的方法,该会话已被session_write_close关闭,而不重新发送Cookie头? Cookie头已由第一个session_start()正确发送.所以第二个只需要让我回访到存储在Web服务器上的会话文件.
<?PHP session_start(); // setting all the session vars I like to set session_write_close(); // <-- // To allow parallel requests by the same user,while this script is still running // Code that takes some time to execute // It also prints output,so no more cookie headers after this point @session_start(); // <-- works,but I like to use it without suppressing warnings $_SESSION['key'] = 'new value I like to store'; session_write_close(); ?>
session_start(); ... session_write_close(); ... ini_set('session.use_only_cookies',false); ini_set('session.use_cookies',false); ini_set('session.use_trans_sid',false); ini_set('session.cache_limiter',null); session_start(); // second session_start
这将阻止PHP第二次调用PHP_session_send_cookie().
See it working.
虽然重组脚本似乎仍然是更好的选择…