codeigniter - 如何在 session_write_close() 之后添加 flashdata
问题描述
我将我的应用程序从 CI2 升级到 CI3(CI v3.1.9 和 PHP7)。现在我在会话中遇到了新并发系统的性能问题(请参阅doc)。
应用程序中的某些操作非常长(例如,因为调用可能需要几分钟才能响应的外部 API),我不希望这些操作锁定会话。按照建议,在执行非常长的操作之前,我会session_write_close()
在控制器中使用函数。
问题是我想在此操作结束时重定向后向用户显示一条消息。现在,我session->set_flashdata()
在重定向之前使用,但是因为我之前关闭了会话,所以它不起作用。
有没有人对如何实现这一目标提出建议?
如果我再次开始会话,session_start()
它正在工作,但我不知道这是否是使用 PHP 会话与 Codeigniter 一样的最佳实践。
解决方案
使用 再次启动会话没有问题session_start()
。CodeIgniter "Session" 类仍然被加载并且实例仍然有效。因此,CI 为使会话正常工作所做的所有“特殊”工作都很好。
前段时间我在一个项目中测试并使用了这个方案,没有遇到任何问题。也没有从仍在运营的网站的客户那里得到任何反击。YMMV。
顺便说一句,在类的__construct()
函数中CI_Session
调用以session_start()
启动 PHP 的会话扩展。所以打这个电话显然不是一个“坏”的做法。:)
推荐阅读
- c++ - 结构时间;与 tm 时间 = {}。输出相同但不一样?
- javascript - Ajax 调用返回 HTML 页面作为响应而不是呈现页面(Rails)
- python - Pandas 使用 Group By 和当前行日期之前扩展平均值
- r - 基于另一个数据集复制粘贴行
- vim - 代码中的 Vim 拼写检查
- javascript - 查询外部 django 视图时如何刷新部分 DOM HTML
- java - 无法在我的存储库中创建 findOneByName 方法
- html - 引导网格修复
- elasticsearch - 将 fielddata 设置为 true 后的 Elasticsearch Distinct 查询
- r - 总结一个逻辑矩阵