我偶尔发现 PHP session 有一个奇怪的问题。
当我使用相同的 session ID 运行两个 PHP 脚本时,第二个脚本会卡住,直到第一个脚本完成。
我猜这是因为试图打开同一个 session 存储文件两次。但可能我不对。
在正常的站点工作中,您永远不会发现这种效果,因为用户通常不会同时打开两个或更多页面。
但是,如果您尝试使用 file_get_contents()
获取同一站点的某个页面的内容,则会遇到此问题。
此外,我通过上下文复制了我的 cookie,因此 file_get_contents()
尝试重新打开与调用脚本中已打开的 session 相同的 session 。
结果,我卡住了长时间运行的脚本(大约 5-10 分钟),这也使我无法使用相同的 sessionid/登录名打开同一站点的任何新页面。
我该如何解决这个问题?你有没有看到任何漂亮的解决方案?
最佳答案
是的,这称为“ session 锁定”,在 PHP 中很常见。
一个解决方案不是不使用 session ,只是为您需要的持久信息设置 cookie。
另一种解决方案是实现您自己的 session 处理程序:
http://php.net/manual/en/session.customhandler.php
有关自定义 MySQL session 处理程序的详细演练在此处:
关于php - 同时在两个 PHP 脚本中使用相同的 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15982654/