一尘不染

如何在tomcat和php之间传递会话

jsp

嗨,我处于WTF代码情况下,正在jsp
tomcat服务器上工作,并试图将会话数据(用户ID等)传递给php。我打算用session_set_save_handler()重写php会话处理,
我的问题是tomcat在哪里将会话数据存储在其中(硬盘?),它使用哪种编码?还是我走错了路?我知道混用php和jsp的想法很愚蠢,只是得到了这个任务,我也很生气。


阅读 186

收藏
2020-06-08

共1个答案

一尘不染

尝试避免不同系统之间的会话。您实际上无法在PHP和Java之间共享会话,因为,

  1. 它们在不同的进程(可能是不同的机器)下运行。没有共享内存。
  2. 他们的会话数据结构完全不同。
  3. 序列化不兼容。
  4. 不同的Cookie样式,“ PHPSESSID”与“ JSESSIONID”。

您几乎必须自己进行会话管理才能共享会话。非常复杂。以下是您必须编写的组件,

  1. 设置公共会话存储,例如DB或memcached。会话存储为大Blob。
  2. 设计一个通用的会话数据结构。我只使用名称-值对。两个系统上必须使用相同的名称,并且值必须是字符串(UTF-8)。
  3. 使用通用的序列化。我将使用PHP的session_encode(),它在Java上相当容易处理。
  4. 处理您自己的会话cookie。
2020-06-08