2014-12-25 2 views
1

Laravel SessionId를 사용하여 Laravel Session에 일부 변수를 추가하려고합니다. 그 이유는 원격 소스 (대기열 작업)에서 세션 데이터를 업데이트하고 클라이언트가 AJAX get 요청으로이 데이터를 검색 할 수 있도록하기 위해서입니다. 작업은 몇 분 또는 몇 시간 동안 실행될 수 있으므로 그에 따라 클라이언트를 업데이트 할 방법이 필요합니다.세션 ID로 Laravel 세션에 추가 하시겠습니까?

내가 Laravel SessionId를 (Session::getId()을 통해) 작업에 보내면 클라이언트가 sessionId를 통해 세션을 조회하고 세션에 속성을 동적으로 푸시하는 반면 클라이언트는 AJAX를 통해 메인의 경로를 오랫동안 폴링합니다 서버는 작업에 의해 세션에 푸시 된 속성을 리턴 한 다음 방금 플러시 된 모든 속성을 클라이언트로 제거합니다.

Amazon ElastiCache에서 Redis 클러스터 드라이버를 사용하면 도움이됩니다.

지금까지 본 것부터 세션에 액세스하는 유일한 방법은 정적 클래스 인 Session 외관을 사용하는 것입니다. 기본적으로 $session = SessionAccessor::findSessionById($sessionId) 또는 이와 비슷한 것을 찾고 있습니다.

Laravel에서도 가능합니까?

+0

원시 PHP에서는 쉽게 시작할 수 없습니다. 시작된 세션 수와 해당 세션 ID를 알 수 없기 때문입니다. 하지만이 방법을 해결할 다른 방법이 있어야합니다. – Yang

+0

원시 PHP 세션을 사용하지는 않습니다. Redis 클러스터를 사용하고 있지만, Redis에 연결하고 저장된 데이터를 직접 조작 할 수는 있지만 Laravel Framework로 수행하는 방법을 알아 내려고했습니다. –

답변

0

나는 이것을 위해 세션을 사용하고 싶지 않습니다. 세션이 대기중인 작업 전에 끝나면 어떻게됩니까? 등등을하는 동안 세션 ID가 바뀔 수 있습니다.

내가 수행 할 작업은 jobs 테이블을 만들거나 로그인 한 사용자 ID와 작업 ID, '상태'와 함께 그런 다음 대기열에있는 작업은 완료되면 데이터베이스 테이블을 간단히 업데이트합니다.

한편 AJAX 폴링은 DB에 최신 상태를 확인하는 경로를 조회합니다.

+0

좋은 아이디어! 내가가는 방법은 "job : $ userid : messages"와 같은 키를 Redis에 집어 넣고 AJAX가/get-status와 같은 경로를 폴링하고 Redis에서 바로 그런 키를 사용하여 데이터를 가져 오는 것입니다. 정말 레디 스가 더 빠를 것이고 나는 이것을 위해 다른 테이블을 원하지 않기 때문에 데이터베이스 테이블을 사용하고 싶지는 않습니다. 고마워, 받아 들였다! –