2013-10-12 3 views
0

AJAX 및 javascript를 사용하여 PHP로 채팅 응용 프로그램을 만들려고합니다. 동일한 브라우저 창에 메시지를 게시하려고하면 메시지가 게시되고 올바르게 표시됩니다. 하지만 다른 창을 열어 첫 번째 창 사용자에게 메시지를 보내려고하면 다음과 같이 창 1에서 메시지를 게시 할 때 창 2 사용자가 게시하는 것처럼 게시합니다. 나는 세션을 사용하여 사용자 이름을 기록하고 있으며 윈도우가로드 될 때마다 사용자의 세션 변수 값이 변경되고 모든 윈도우에서 응용 프로그램의 동작에 영향을 미친다 고 생각합니다. 즉, 창 1의 세션 변수로 저장된 사용자 이름은 창 2의 사용자 이름에 의해 무시됩니다. 둘 다 동일한 코드 부분에 액세스하기 때문입니다. 그리고 AJAX는 데이터베이스에서 새 메시지를 얻으려고 할 때마다 새 창이로드 될 때 다른 사용자를 찾습니다. 이 문제가 멀티 스레딩으로 해결 될 수 있는지 또는이 문제를 해결할 다른 방법이 있는지 궁금합니다. 채팅 응용 프로그램에 멀티 스레딩이 항상 필요합니까? 그것은 나에게 아주 혼란 ​​스럽다. 도와주세요.PHP의 채팅 응용 프로그램에서 멀티 스레딩

+0

같은 브라우저를 사용하는 두 개의 창은 일반적으로 쿠키를 공유하므로주의해야합니다. 두 가지 브라우저 또는 두 대의 컴퓨터를 사용하여 테스트하십시오. PHP 채팅 앱에서 멀티 스레딩을 할 필요가 없습니다. afaik php는 멀티 스레딩을 지원하지 않습니다. – enrey

+0

감사합니다 ... 작동 중입니다 ... –

+0

이 경우 폴링이 발생합니다. 사용자가 폴링을 늘리면 성능이 떨어집니다. –

답변

1

서로 다른 세션을 갖고 있어야하는 서로 다른 두 명의 사용자가 서로 채팅하고 싶다면 두 개의 서로 다른 브라우저 (예 : Internet Explorer 및 Firefox)를 열고 각 브라우저에서 한 명의 사용자로 로그인 할 수 있습니다. 그런 다음 세션이 공유되지 않습니다.

다른 브라우저 창에서 동일한 브라우저 공유 세션을 알기 때문에 나중에 로그인하면 첫 번째 로그인을 덮어 씁니다.

+0

고마워 ... 이제 나는 그것을 이해했다. –

관련 문제