1

제 3 자 웹 서비스에 대한 호출을 포함하는 PHP 웹 애플리케이션을 만들고 있습니다. 최근에 일부 웹 서비스가 느려지거나 시간이 초과되어 문제가 발생했습니다. (이 경우 웹 응용 프로그램에서 처리하는 5-6 분 후에 서비스에서 오류가 발생합니다.)슬로우 서버 스크립트가 IE 스톨을 만든다

그러나 결과/시간 초과를 기다리는 동안 웹 응용 프로그램의 다른 모든 연결은 브라우저 (IE의 다른 창/탭)가 멈 춥니 다. 다른 브라우저 (예 : Chrome)에서 보조 창을 열면 웹 애플리케이션이 지연없이 페이지를 제공하기 때문에 브라우저에 문제가있는 것 같습니다.

웹 서비스 호출을 비동기 적으로 설정하는 것을 고려했습니다 (브라우저에서 별도의 server.side 프로세스 또는 ajax 호출). 그렇지만 IE가 모든 연결을 연결하는 이유를 알고 싶습니다. 한 페이지를 기다리는 동안 대기중인 웹 앱? 커스텀 헤더 나 다른 간단한 마크 업 트릭이 IE에게 같은 호스트의 다른 페이지로의 연결을 계속한다고 말할 수 있습니까? 당신이 있다면

답변

1

문제는 결과/제한 시간을 기다리는 동안, 당신이보고있는 것은 정상 및 예상되는 동작은 브라우저

에서 웹 응용 프로그램에 다른 모든 연결임을 발생 세션을 사용하여. 기본 파일 기반 세션 핸들러는 세션 소유자가 요청할 때 세션 파일에 잠금을 설정합니다. 요청이 완료되면 잠금이 해제됩니다. 그 동안 사용자가 추가 요청을하면 해당 요청은 계속 진행하기 전에 잠금이 해제 될 때까지 대기합니다. 이 동작은 세션 데이터가 손실 될 수있는 경쟁 조건을 방지합니다.

세션을 사용하고 있지 않거나 자신 만의 세션 핸들러를 작성했지만 잠금 기능을 수행하지 않으면 (대부분의 경우 해당 동작을 직접 코딩해야합니다.) 그렇다면 IE는 이상한 행동을 보입니다. 더 이상의 제안이 없습니다. 나는 웹 서비스 호출을 비동기

웹 서비스가 신뢰할 수없는 경우를 설정하는 것으로 간주 한

, 이것은 좋은 생각이다. 작업/메시지 대기열 시스템 인 Gearman을 고려해야합니다. 그것은 comprehensive PHP supportPECL extension으로 가지고 있습니다.

+0

세션을 사용하지 않는 사용자의 경우에도 세션을 인식하고 세션을 사용하고있을 수 있으므로 php.ini에서 session.auto_start가 0으로 설정되어 있는지 확인해야합니다. –

+0

정보를 제공해 주셔서 감사합니다. 나는 세션을 사용하고, 나에게는 서버에서 잠금이 발생하지 않았다. 1) 다른 모든 작업은 매우 빠르게 실행된다. 2) 대부분의 작업은 단일 페이지 – goorj

관련 문제