加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 会话到期时运行一个函数?

发布时间:2020-12-13 17:09:28 所属栏目:PHP教程 来源:网络整理
导读:会话在 PHP脚本上结束时是否可以运行函数?我的脚本会问几个问题,用户有30分钟的回答时间或会话过期.如果会话过期且用户尚未完成所有答案,我希望我的脚本将任何进度保存到.txt文件.我该怎么做呢? 我听说过register_shutdown_function(‘shutdown’);但我很
会话在 PHP脚本上结束时是否可以运行函数?我的脚本会问几个问题,用户有30分钟的回答时间或会话过期.如果会话过期且用户尚未完成所有答案,我希望我的脚本将任何进度保存到.txt文件.我该怎么做呢?

我听说过register_shutdown_function(‘shutdown’);但我很困惑我会在我的脚本中将其称为何处.

我当前的脚本开头是这样的:

ini_set('session.gc_maxlifetime',1800);
 ini_set('session.gc_probability',1);
 ini_set('session.gc_divisor',1);
 session_start();
 if($_SESSION['loggedin'] !== 1) {//checks to see if user has logged in
 header('Location: login.php');
 exit;}

 ...asks a bunch of questions....
 session_destroy();

谢谢你的帮助.

解决方法

你有两个选择:

>保存进度(每??次回答后)并保存信息是否已完成.即使浏览器已关闭(进度实时保存),此解决方案仍然有效.
>使用AJAX每个例如调用服务器. 5秒钟,服务器应返回会话是否结束的信息.如果会话结束,那么在JS中做你需要的东西(甚至重定向到不同的页面).此解决方案无法确保保存进度(在执行操作之前可能会关闭浏览器).

您可以根据需要和应用程序的工作方式组合这两个选项.

如果页面在每个答案后重新加载(例如重新加载以显示下一个问题),那么您可以使用选项号. 1.如果所有问题都在一页上,请选择选项号. 2.如果您的应用程序是两者的组合,您可以选择这两个选项.

编辑:

根据您的代码判断,您正在混合:

>在回答问题的时间方面
>在PHP中对页面的请求之间存储值的会话.

最好的想法是将两者分开.为PHP会话提供更大的时间限制,因为它需要一些其他的东西,比如实际显示进度甚至保存进度.相反,标记测试开始的时间并将其存储在PHP会话中.这样,在测试用完之后,您将能够确定并忽略之后回答的任何问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读