对对象使用PHP SESSION


Using PHP SESSION for objects

我可以选择在我的web项目上创建一个新合同。

创建一份新合同由以下文件组成(注意法国人):

  • Coordonées客户
  • Fiche Découverte
  • Contrat
  • 分类客户端
  • 菲切自杀
  • 制定计划
  • CCI
  • 的财务状况

    保存按钮

所以我有一个主创建页面,用户可以点击其中一个文档,填写所有字段,然后返回到这个屏幕。目前我的解决方案是在PHP会话中存储一个大对象(存储所有文档数据),并将用户所做的每一次修改都附加到该对象中。

例如,如果用户转到第一个文档,写一些东西,然后返回到主面板,则数据保存在会话中。当他单击SAVE BUTTON时,会话中的所有内容都存储在一个复杂的数据库模式中。

如果您在合同不完整时点击保存(它至少缺少一个文档),那么大对象将存储在MongoDB中,稍后恢复。

  1. 我做的每件事都被认为是良好的实践吗
  2. 我不应该在会议上休息吗?(目前我还没有遇到任何问题。物体大小约为5kb)
  3. 我是否也应该使用Mongo来存储中间数据

Ps:这是一个内部项目,所以安全永远不会成为问题。问题将是数据的一致性和质量。

还要注意,自定义对象是在不需要强制转换的情况下从会话中保存和恢复的。至于mongo,我必须铸造每一个组件。

在我看来,我几乎不擅长使用非关系数据库。我发现的解决方案很简单:

我没有像下面这样在MongoDB中插入,然后在从数据库中选择时使用复杂的强制转换,而是序列化了对象

之前:

   //convert big object to array to store in MongoDB
    $this->mongo_db->insert('contrats', (array)$contrat); 

之后:

   $data=Array();
   $data['identifier']='123' //set an id so I can query by
   $data['contract']=serialize($contract);
   $this->mongo_db->insert('contrats',$data);

并且数据恢复非常容易——unserialize($row->contract)返回我需要的对象。

通过这种方式,在Mongo中存储临时数据变得很容易,我只需要设置一个标识符来查找契约并序列化大对象。