사용자가 백그라운드 프로세스를 시작할 수있는 페이지가 있습니다. 사용자가 페이지를 새로 고치거나 탭이나 브라우저를 닫을 때이 프로세스를 중지하고 싶습니다. connection_abort()
을 시도했지만 행운은 없습니다. 스크립트는 계속 실행됩니다. 아이디어가 있으십니까?PHP 백그라운드 프로세스 중지
2
A
답변
0
나는 운이다고 생각합니다. http
은 상태가 유지되지 않는 프로토콜이므로 페이지가 제공되는 즉시 연결이 닫힙니다.
일부 아약스 트릭 외에도 사용자가 브라우저를 새로 고치거나 닫는 것을 알 수있는 방법이 없습니다. 당신이 사용자에 대한 고유 식별자를 가지고 있고,이 연결 또는 프로세스 ID와 함께 저장 될 수있는 경우
+0
이렇게 고맙습니다. 어쨌든 고맙습니다. – slash197
0
, 다음과 같은 논리는 일할 수 :
- 사용자 요청 페이지
- 사용자는 고유 주어집니다 id
- 백그라운드 프로세스가 시작되고 ID가 사용자 ID와 함께 데이터베이스에 기록됩니다.
- 프로세스는 선택한 빈도로 데이터베이스를 검사하여 데이터베이스에 기록합니다 또는 예상대로 진행되지 않으면 프로세스가 중단됩니다.
- 그런 다음 사용자가 어떤 프런트 엔드 수 중 하나를 아약스를 통해
- 트리거 스크립트 (즉 stop_process.php 사용자 ID =?)가 필요 - 즉 페이지가 멀리 이동할 때. 특정 브라우저에서 ajax 요청을 방지 또는 중지하기 때문에이 방법은 신뢰할 수 없습니다.
- 타임 스탬프가있는 db의 프로세스 레코드를 계속 업데이트하는 아약스 폴링 스크립트가 있습니다.이 스탬프가 오래된 경우 (사용자가 js를 탐색하거나 중지 한 경우) 프로세스가 중지됩니다. 타깃이 잠겨 할 수있는 경우 그래서 아마 단지 정말로 필요한 경우로 간주되어야하거나 (이 자바 스크립트에 의존로서 가능성이 변덕)
은 위의 다소 관련 솔루션 입니다.
비 js 솔루션으로 폴링 방법에 의존하고 메타 새로 고침 프레임을 설정할 수 있습니다. 그러나 이것은 이전 버전의 Internet Explorer 사용자에게 지속적인 '클릭'을 미칠 수 있습니다. 솔루션이 오히려 우아하지는 않습니다.
관련 문제
- 1. PHP 백그라운드 프로세스
- 2. PHP 백그라운드 프로세스
- 3. 유닉스 백그라운드 프로세스
- 4. 파이썬의 비동기 백그라운드 프로세스?
- 5. 백그라운드 프로세스 하위 프로세스. 파이프로 열기
- 6. PHP의 백그라운드 프로세스
- 7. 나는 PHP 백그라운드 프로세스 문제를 겪고있다
- 8. exec 함수를 사용하여 PHP 백그라운드 프로세스
- 9. 백그라운드 프로세스 대 Foreground 프로세스
- 10. 프로세스 중지
- 11. 백그라운드 프로세스, 로딩 막대
- 12. Android에서 프로세스 죽이기없이 백그라운드 스레드를 중지 할 수있는 방법이 있습니까?
- 13. RunWorkerAssync에서 백그라운드 작업자 중지
- 14. 백그라운드 프로세스 실행
- 15. Python의 백그라운드 프로세스
- 16. Sinatra에서 백그라운드 프로세스 실행
- 17. 백그라운드 애플릿의 프로세스
- 18. Grails 백그라운드 프로세스
- 19. 안드로이드 백그라운드 프로세스 검사
- 20. Ruby에서 백그라운드 프로세스 생성하기
- 21. 서버 측 백그라운드 프로세스
- 22. android의 백그라운드 프로세스
- 23. 백그라운드 프로세스 c
- 24. 발사 백그라운드 프로세스
- 25. asp.net의 백그라운드 프로세스
- 26. 백그라운드 프로세스 용 테스트 작성 (백그라운드 작업)
- 27. 백그라운드 서비스 프로세스 리 바인딩
- 28. Windows에서 프로세스 일시 중지
- 29. UITextView에서 반복되는 백그라운드 이미지 중지
- 30. ASP의 백그라운드 파일 복사 프로세스
'websockets'은 그 트릭을 할 수 있습니다. – Baba