当前位置:  开发笔记 > 编程语言 > 正文

跨多个.php页面的PHP静态变量

如何解决《跨多个.php页面的PHP静态变量》经验,为你挑选了1个好方法。

我正在用PHP构建一个POP3邮箱.我有以下文件:

server_access.php(从POP3服务器获取邮件)

data_access.php(将邮件提取/写入本地数据库)

mime_parser.php(解析MIME内容)

core.php(使用上面的文件并将解析后的邮件存储为名为$ inbox的关联数组)

现在,我有页面 mailbox.php来显示收件箱和showmail.php来显示每个邮件.用户的凭据存储在.ini文件中,并在必要时使用.问题是,我在mailbox.php和showmail.php中都有一个require_once('core.php')

我可以显示收件箱(即$ inbox有值),但是,如果我选择阅读邮件(showmail.php的弹出窗口),$ inbox是一个空数组.

$ inbox在core.php中定义为静态数组



1> cletus..:

静态数据仅在类的上下文中是静态的,这意味着类中的静态数据成员由该类的所有实例共享.

您似乎在谈论的是跨多个HTTP请求的数据持久性.静态数据不会为您做到这一点.这就是$ _SESSION数据的用途.

换句话说:一旦脚本完成为当前请求提供服务,它就会完全死掉.所有数据都已完全清理干净.新请求开始新鲜.

会话数据持续存在,直到PHP决定清理它或手动销毁它.通常,您只需将脚本中的所有操作都放在脚本中:

脚本1:mailbox.php

session_start();
$_SESSION['mailbox'] = array( /* messages */ );

脚本2:showmail.php

session_start();
$mailbox = $_SESSION['mailbox'];

有一点需要注意:如果您的脚本长时间运行,请尝试尽快放入session_commit()因为PHP中的会话访问阻止,这意味着如果另一个脚本尝试对同一用户进行session_start(),它将阻塞直到第一个脚本完成执行或释放会话.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有