我偶尔会发现 PHP 会话存在一个奇怪的问题。
当我使用相同的会话 ID 运行两个 PHP 脚本时,第二个脚本会卡住,直到第一个脚本完成。
我猜这是因为尝试打开同一会话存储文件两次。但可能我不对。
在正常的网站工作中您永远不会发现这种效果,因为用户通常不会同时打开两个或更多页面。
但是,如果您尝试使用以下方式获取同一网站页面的内容file_get_contents()
,你就会发现这个问题。
另外,我通过上下文复制了我的cookie,所以file_get_contents()
尝试重新打开与调用脚本中已打开的会话相同的会话。
结果,我卡住了长时间运行的脚本(大约 5-10 分钟),这也使我无法使用相同的 sessionid/登录名打开同一站点的任何新页面。
我该如何解决这个问题?你见过任何漂亮的解决方案吗?
是的,这称为“会话锁定”,在 PHP 中很常见。
一种解决方案不是不使用会话,而是为您所需的持久信息设置 cookie。
另一个解决方案是实现您自己的会话处理程序:
http://php.net/manual/en/session.customhandler.php
有关自定义 MySQL 会话处理程序的详细演练如下:
http://phpmaster.com/writing-custom-session-handlers/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)