2013-03-08 2 views
1

개요를 얻으려면 :Symfony2는 세션 데이터를 직렬화하고 씁니다.

나는 응용 프로그램을 Symfony1을 기반으로 구축했지만 Symfony2를 사용하여 새 부품을 구축하고 있습니다. Symfony2에서 로그인/로그 아웃 동작을 이동하고 Symfony1이 Symfony2에서 세션 데이터를 읽도록했습니다. symfony2가 세션 데이터를 기본 PHP $ _SESSION에 쓰도록 지시하면 모든 것이 배열에 있고 Symfony1이 데이터를 읽고 사용자를 자동으로 로그인 할 수 있습니다.

이제 각각의 VM에서 Symfony1과 Symfony2 앱을 이동하려고합니다. 따라서 PHP $ _SESSION으로 작성하는 대신 MongoDB에 세션을 저장합니다 (MongoDbSessionHandler를 통해).

_sf2_attributes|a:0:{}_sf2_flashes|a:0:{}_sf2_meta|a:3:{s:1:"u";i:1362655964;s:1:"c";i:1362655964;s:1:"l";s:1:"0";} 

를하고 확실히 unserializable되지 않습니다 :하지만이 Symfony1 응용 프로그램에서 세션 데이터를 읽을 때 지금, 나는이 같은 끝낼. Symfony2는 자체 방식으로 데이터를 직렬화하는 것으로 보이며이 _sf2_ * 항목은 메타 데이터라고 생각합니다. 문제는 그 것입니다 이 직렬화가 일어나는 곳을 찾을 수 없습니다. 그것을 직렬화 할 수 없게하려면 직렬화되는 방법을 찾아야합니다. 여기에 전달

public function write($id, $data) 
{ 
    return (bool) $this->handler->write($id, $data); 
} 

은 $ 데이터가 직렬화 된 데이터를 포함,하지만 난 그것을 호출되는 코드에서 찾을 수 없습니다 내가 찾은 가장 가까운 장소는 SessionHandlerProxy입니다.

행운이 있습니까?

답변

2

MongoDbSessionHandler 여기 핸들러 저장 PHP 세션으로 설정됩니다 : https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php#L349-L370

으로 session_start() (https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php#L146) 실제로 세션 파일/몽고의 내용을 읽고 글로벌 $ _SESSION 변수를 만들 : http://www.php.net/manual/en/function.session-start.php

을 PHP의 session_decode 함수를 살펴보십시오 : http://www.php.net/manual/en/function.session-decode.php -이게 당신이 찾고있는 것일 수도 있습니다.

+0

AAAAaaaahahhhhh. 내가 찾고 있던 것은 세션 디코드 기능이었습니다! 나머지는 모두 가지고 있었지만 이상한 직렬화를 이해할 수는 없었습니다. 감사! – godbout

관련 문제