One thing that should be understood is that if you are creating a RESTfull service using sessions is by nature NOT a RESTfull process.
PHP의 세션 지원은 지속적인 접근에 어떠한 데이터를 유지하는 방법입니다. 사용자 정의 어플리케이션을 만들고 웹 사이트의 인상을 증가시키도록 해 줍니다.
웹 사이트에 접근하는 방문자에게 세션 id라고 불리는 고유 id를 할당합니다. 사용자 측에서는 쿠키에 저장하거나, URL에 포함될 수 있습니다.
세션 지원은 요청 간에 유지되는 임의 갯수의 변수를 $_SESSION 슈퍼 전역 배열을 통하여 기록할 수 있게 합니다. 방문자가 사이트에 접근하면, PHP가 자동적으로(session.auto_start를 1로 설정시), 또는 요청에 따라서 (명시적인 session_start()나 session_register()를 통해 암시적으로) 요청에서 지정한 세션 id를 확인합니다. 이 때, 이전에 저장해둔 환경이 재생성됩니다.
session.auto_start를 사용할 때, 객체를 세션에 넣는 유일한 방법은 auto_prepend_file을 사용하여 클래스 정의를 적재하는 것입니다. 그렇지 않으면 객체를 serialize()하여 저장하고 나중에 unserialize()해야 합니다.
$_SESSION(과 모든 등록된 변수)은 요청이 종료된 후에 session.serialize_handler ini 설정에 지정된 직렬화 핸들러를 사용하여 PHP 내부적으로 직렬화합니다. 해제된 등록 변수는 정의되지 않은 것으로 처리합니다. 연속된 접근에서, 이 변수들은 사용자가 나중에 정의하지 않는 한 세션 모듈에서는 정의되지 않습니다.
세션 데이터는 직렬화되기에, resource 변수는 세션에 저장할 수 없습니다.
Note:
세션으로 작업할 때 주의할 점은 session_register() 함수를 사용해서 변수를 등록하거나, $_SESSION 자동 전역 배열에 새 키를 추가하지 않는 한 세션 기록이 만들어지지 않습니다. 이는 세션이 session_start() 함수로 시작되었는지 여부와도 상관이 없습니다.
Note:
PHP 5.2.2에는 open_basedir이 설정되고 "/tmp"가 명시적으로 경로에 추가되어 있지 않아도 세션 파일을 "/tmp"에 저장할 수 있는 문서화되지 않은 기능이 있었습니다. 이 기능은 PHP 5.3.0부터 PHP에서 제거되었습니다.
One thing that should be understood is that if you are creating a RESTfull service using sessions is by nature NOT a RESTfull process.