我将我的应用程序从CI2升级到了CI3(CI v3.1.9和PHP7)。现在,会话中新的并发系统出现性能问题(请参见doc)。
应用程序中的某些操作非常长(例如,由于调用外部API可能需要几分钟才能响应),因此我不希望这些操作锁定会话。按照建议,在执行非常长的操作之前,我将在控制器中使用session_write_close()
函数。
问题是在此操作结束后,我想在重定向后向用户显示一条消息。目前,我在重定向之前使用的是session->set_flashdata()
,但是由于我早先关闭了会话,因此无法正常工作。
有人对如何实现这一目标有建议吗?
如果我再次使用session_start()
开始会话,则它可以正常工作,但是我不知道这是与Codeigniter一起使用PHP会话的最佳实践。
答案 0 :(得分:0)
使用session_start()
重新开始会话没有问题。 CodeIgniter的“会话”类仍在加载,并且实例仍然有效。因此,CI可以使会话正常工作的所有“特殊”内容都可以使用。
我测试了一段时间,然后在项目中使用了该方案,但没有遇到任何问题。仍没有从仍在运行的站点的客户那里得到任何回响。 YMMV。
顺便说一句,在__construct()
类的CI_Session
函数中,对session_start()
的调用是为了启动PHP的会话扩展。因此,拨打电话显然不是一个“坏”习惯。 :)