2012-08-23 2 views
2

웹 프로젝트에 새 계약을 생성 할 수있는 옵션이 있습니다. 새로운 계약을 작성객체에 PHP 세션 사용

는 (프랑스 마음) 다음과 같은 문서로 구성되어 있습니다 :

  • Coordonnées 클라이언트
  • 피시 메디 테라
  • Contrat
  • 분류 클라이언트
  • 피시의 suiveuse
  • 을 계획하기 mise en place
  • C CI
  • Enquête의 FINANCIERE

    SAVE 버튼

그래서 나는 사용자가 이러한 문서 중 하나를 클릭하여 모든 필드를 작성하고이 화면으로 돌아 할 수있는 메인 페이지를 만들 수 있습니다. 내 솔루션은 PHP 세션에 큰 개체 (모든 문서 데이터 저장)를 저장하고 사용자가 수정 한 내용을 추가하는 것입니다.

예를 들어 사용자가 첫 번째 문서로 이동하면 무언가를 쓰고 세션에 데이터가 저장된 기본 패널로 돌아갑니다. 그가 SAVE BUTTON을 클릭하면 세션의 모든 내용이 복잡한 데이터베이스 스키마에 저장됩니다.

계약이 불완전 할 때 (이 큰 개체가 MongoDB를 저장하고 나중에 복구, 문서 중 적어도 하나 없다.

  1. 내가 좋은 실례로 간주 할 모든 것 저장을 클릭하면?
  2. 나는하지 세션에 휴식해야 (지금은 문제가 없었어요에 대한 개체 크기가 5킬로바이트에 관한 것입니다.)
  3. 가 나는 또한 중간 데이터를 저장하는 몽고를 사용해야

시를? : 이는 보안이 문제가되지 않도록 내부 프로젝트입니다. 문제는 데이터의 일관성과 품질입니다.

또한 사용자 지정 개체는 캐스팅 할 필요없이 세션에서 저장되고 복원됩니다. mongo에 관해서는, 모든 구성 요소를 캐스팅해야합니다.

+0

http://stackoverflow.com/questions/1442177/storing-objects-in-php-session – ceejayoz

답변

1

저는 비 관계형 데이터베이스를 사용할 때 많은 멍청한 반응을 보입니다. 내가 찾은 해결책은 아주 간단했다 :

대신 내가 데이터베이스에서 선택하면 복잡한 캐스트를 사용하여 아래에 다음과 같이 MongoDB를에 삽입, 내가 객체를 직렬화

전 :

AFTER :

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

데이터 복구가 매우 쉽습니다.

이렇게하면 임시 데이터를 Mongo에 저장하는 것이 쉬워지고 계약을 찾고 큰 개체를 직렬화하기 위해 식별자를 설정하기 만하면됩니다.