在Azure中将会话默认时间从20分钟更改为2小时PHP

时间:2019-02-19 02:13:00

标签: php azure azure-web-sites

我需要将Azure平台上的会话时间从20分钟增加到2小时。

3 个答案:

答案 0 :(得分:1)

我在IIS配置的web.config文件中搜索了更改会话超时的信息,但是没有任何与PHP或其他语言相关的种子配置,除了ASP和IIS self,如下图所示。

enter image description here

因此,您不必担心PHP之外还有其他选项会影响PHP会话超时,而只是更改PHP配置。

有许多方法可以更改PHP中的会话超时。

  1. 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"); 
    
  2. 要通过在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

https://social.msdn.microsoft.com/Forums/en-US/05f254a6-9b34-4eb2-a5f7-2a82fb40135f/time-out-after-230-seconds?forum=windowsazurewebsitespreview

答案 2 :(得分:0)

感谢关注@ ajaykumar-msft和@ peter-pan。我解决了创建applicationhost.xdt文件并从loader configuration file的{​​{1}}目录中下载原始.ini文件的问题,并将其复制到了我编辑和更改过的phpinfo文件夹中sitesession.gc_maxlifetime = 1440。快乐=)enter image description here

我的文件applicationhost.xdt:

session.gc_maxlifetime = 7200