我需要将Azure平台上的会话时间从20分钟增加到2小时。
答案 0 :(得分:1)
我在IIS配置的web.config
文件中搜索了更改会话超时的信息,但是没有任何与PHP或其他语言相关的种子配置,除了ASP和IIS self,如下图所示。
因此,您不必担心PHP之外还有其他选项会影响PHP会话超时,而只是更改PHP配置。
有许多方法可以更改PHP中的会话超时。
在php.ini
中或通过相关的API更改会话超时。
在php.ini中设置会话超时
session.cookie_lifetime = 7200 // 2*60*60 seconds
session.gc_maxlifetime = 7200
或在PHP代码中使用ini_set
函数。
ini_set('session.gc_maxlifetime', "7200");
ini_set("session.cookie_lifetime","7200");
要通过在timeout
中设置$_SESSION
属性来存储用户请求的上次时间,并检查下一个请求是多久之前的,请参考现有的SO线程{{ 3}}。
<?php
// set the last time for each request as previous time
$_SESSION['timeout'] = time();
?>
<?php
// check the interval time with the previous request time in the current request
if ($_SESSION['timeout'] + 10 * 60 < time()) {
// session timed out
} else {
// session ok
}
?>
您可以在StackOverflow或Google或Bing之类的搜索引擎中进行搜索,以找到其他解决方案,例如此SO线程PHP Session timeout。
答案 1 :(得分:1)
增加了彼得的回应。 Azure负载平衡器的默认空闲超时设置约为4分钟(230秒)。这是请求不将任何数据发送回响应所花费的最长时间。如果您的Web应用程序需要后台处理,则可以建议使用Azure WebJobs或Azure Functions是另一种选择。
如果将数据发送回以保持其生命力不可行,则建议的方法是移至异步模式。 此外,默认情况下,在构建过程启动某些命令时,它最多可以运行60秒而不会产生任何输出。如果还不够长,可以将其延长,例如使其达到10分钟: SCM_COMMAND_IDLE_TIMEOUT = 600
有关此主题的更多详细信息,请参阅以下文档:
https://docs.microsoft.com/en-us/azure/app-service/faq-availability-performance-application-issues
答案 2 :(得分:0)