Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用户会话持续过期_Php_Session_Ini - Fatal编程技术网

Php 用户会话持续过期

Php 用户会话持续过期,php,session,ini,Php,Session,Ini,我有一个上传表单,用户大约需要30分钟才能完成。他们在这一页上一直无所事事。我使用ini_set()函数。您可以在此处看到上载页面的顶部: <?php session_start(); ini_set('session.gc_maxlifetime',10080); ?> 持续发生的情况是,如果用户空闲30分钟或更长时间。数据将被截断,并且用户id记录为空值。我完全搞不懂这是怎么回事。我最初在php.ini中设置了maxlif

我有一个上传表单,用户大约需要30分钟才能完成。他们在这一页上一直无所事事。我使用ini_set()函数。您可以在此处看到上载页面的顶部:

    <?php

        session_start();
        ini_set('session.gc_maxlifetime',10080);

    ?>


持续发生的情况是,如果用户空闲30分钟或更长时间。数据将被截断,并且用户id记录为空值。我完全搞不懂这是怎么回事。我最初在php.ini中设置了maxlifetime,但这使缓存的会话数据过载。所以,我只是使用ini_集。为什么数据会变得乱七八糟,用户id不会被记录下来。注意:如果你做表单的速度足够快,就不会有问题。

这是因为还有另一个脚本使用
session.gc\u maxlife
value~30分钟调用。因此,other脚本的会话垃圾收集器清除超时会话(从它们的角度来看,会话超时)


解决方案:您需要在
php.ini
.htaccess
中更改
session.gc\u maxlifetime
的全局值,或者在每个脚本中指定相同(或至少更大)的值。

这是因为有另一个脚本使用
session.gc\u maxlifetime
值~30分钟调用。因此,other脚本的会话垃圾收集器清除超时会话(从它们的角度来看,会话超时)


解决方案:您需要在
php.ini
.htaccess
中更改
session.gc\u maxlifetime
的全局值,或在每个脚本中指定相同(或至少更大)的值。

您应该在
session\u启动()之前使用
ini\u set()
会话开始()之前

  • 使用
    ini\u set
    设置
    session.gc\u maxlifetime
    不一定会影响服务器清除会话的方式。 例如,在Debian上(我想象在其他一些系统上也是如此),会话被一个cron作业清除,该作业不受脚本中的任何配置的影响(它只读取全局php.ini设置)。 如果是这种情况,可以在php.ini中增加服务器范围

  • 您可以覆盖,然后自己处理会话过期

  • 您可以使用一些ajaxkeepalive调用,这样即使当用户在表单页面上空闲时,也可以在到期时间内与服务器“交谈”,以保持会话的活动状态

  • 使用
    ini\u set
    设置
    session.gc\u maxlifetime
    不一定会影响服务器清除会话的方式。 例如,在Debian上(我想象在其他一些系统上也是如此),会话被一个cron作业清除,该作业不受脚本中的任何配置的影响(它只读取全局php.ini设置)。 如果是这种情况,可以在php.ini中增加服务器范围

  • 您可以覆盖,然后自己处理会话过期

  • 您可以使用一些ajaxkeepalive调用,这样即使当用户在表单页面上空闲时,也可以在到期时间内与服务器“交谈”,以保持会话的活动状态


  • 哪个用户id?您是否在会话中存储数据并且数据在30分钟后消失?哪个用户id?您是否将数据存储在会话中,并且数据在30分钟后消失?我对其进行了全局设置,并在我的每个页面上设置了session_start(),然后网站崩溃。我有一个错误,就是缓存的会话数据太多了。ini_设置是否应该覆盖我添加的页面上的默认24分钟?我不知道这是否是共享主机的限制。但是,我把它设置为全球1天。这会导致站点上具有会话_start()的每个页面上出现错误。无论用户是否也已登录,都会显示该错误。我对其进行了全局设置,并在我拥有的每个页面上设置了session_start(),然后网站崩溃。我有一个错误,就是缓存的会话数据太多了。ini_设置是否应该覆盖我添加的页面上的默认24分钟?我不知道这是否是共享主机的限制。但是,我把它设置为全球1天。这会导致站点上具有会话_start()的每个页面上出现错误。无论用户是否也登录了,都会显示错误。等等,ini_集()是否因为其放置顺序而被忽略?此外,ini_集()是否也会位于ob_星()之上?通常您会将ini_集()置于文档的最顶端等等,ini_集()是否因为其放置顺序而被忽略?此外,ini_集()是否也会位于ob_星()之上?通常将ini_set()放在文档的最顶端