2013-07-18 34 views
2

我注意到我的PHP会话变量的问题。PHP会话变量需要一段时间来注册变化

如果在一个页面上设置了一个变量,它不会立即在另一个页面上显示。在会话变量的新值出现之前,可能需要重新加载页面。我将它们发送回脚本并将值记录到控制台以查看它。

这是正常的吗?会话值对于屏幕上显示的内容至关重要,所以重要的是它具有正确的值。

我应该补充一点,我已经指示浏览器不要缓存页面了。

+0

奇怪的行为。你有没有试过在没有其他代码的情况下测试它? (只设置会话变量并在其他页面上显示?) – Pieter

+0

这意味着PHP写入会话很困难(如果使用基于文件的处理程序,它将是磁盘,这可能表明HD问题,或会话越大越健康)。您使用的是什么会话处理程序,以及这些会话的典型存储大小是多少?然而,这也可能意味着在那段时间内原始脚本仍然忙于其他东西,只要完成会话变量就调用'session_write_close()'可以帮助在这种情况下。 – Wrikken

回答

0

您是否在设置这些变量后通过标题('Location:')调用重定向?

正如wrikken所建议的,您应该在重定向之前调用session_write_close()。

除此之外,您的重定向之后确保您调用exit;例如

header('Location:newurl.php');

exit;

否则您的原始页面将继续处理。