2017-01-09 12 views
3

Laravel에서 session_write_close()을 실행하기 전에 sleep()은 현재 연결이 완료 될 때까지 세션이 다른 요청으로부터 차단되어 있기 때문에 작동하지 않는 것처럼 보입니다.Laravel에서 session_write_close()하는 방법?

나는 다른 요청을 차단하지 않고 Laravel에서 sleep()을 시도하고 있습니다. Session_write_close()가 여기에 언급 된 문제를 해결해야한다고 알았습니다 : Long polling in Laravel (sleep() function make application freeze). 그러나 그것은 효과가 없습니다. sleep()은 여전히 ​​다른 요청을 차단하고 있습니다. https://github.com/doncadavona/laravel-angularjs-chat/blob/master/app/Http/Controllers/MessagesController.php

답변

1

당신은 laravel에 session_start() 또는 session_write_close()을 사용할 수 없습니다 : 코드에 직접 http://github.com/doncadavona/laravel-angularjs-chat

:

프로젝트 응용 프로그램은 일반 폴링 긴 폴링을 사용하는 채팅 응용 프로그램입니다.

현재 연결이 완료 될 때까지 세션이 여전히 차단되어 있기 때문에 Laravel이 작동하지 않는 것 같습니다.

이것은 이미 PHP의 특성이므로, 동시에 여러 요청을 처리하기 위해 AJAX가 생성 된 이유입니다.

+0

감사합니다. 따라서 PHP는 긴 폴링에 적합하지 않습니다. 적어도 핵심은. 이것은 : http://reactphp.org/이 문제에 대한 좋은 서비스 인 것 같습니다. 하지만 아직 테스트하지 않았습니다. – doncadavona

+0

예. 그것의 websocket처럼. –

0

Laravel은 PHP의 세션 처리 기능을 사용하지 않습니다. 처리기의 write 메서드를 호출하려면

을 사용해야합니다. 그러나 Laravel도 세션 잠금 메커니즘을 구현하지 않기 때문에 세션을 저장/닫았 기 때문에 세션 관련 차단을 볼 수 없으며 아약스 동작이 변경되지 않아야합니다.