현재 프로젝트 용으로 Achievements 시스템을 계획 중입니다. 사용자가 실제로 성취도 페이지를 방문하면 성취도가 잠금 해제되고 완료되지 않은 성취도는 진행률이 표시됩니다.AJAX/PHP 비동기식 계산
업적 중 일부를 계산하는 데 다소 시간이 걸릴 수 있습니다. 나는이 아이디어를 내놓았다,하지만 난 어떻게 구현 가야하는 아무 생각이 없다, 또는 심지어 가능하다면 :
가- 자바 스크립트가 AJAX를 통해 성과 데이터를 요청
- PHP는 각각에 대해 성취 진행
- 을 계산 시작 성과가 선이
ID:progress
- 자바 스크립트는 각 행을 수신하고 주어진 성과
에 대한 진행 상황을 보여줍니다 형태의 출력 스트림에 기록됩니다 어떻게 것 AJAX가 도착하자마자 responseText
을 한 줄에 모두 읽는 대신 한 줄씩 읽게하는 방법에 대해 생각해보십시오. 가능하면 또한, 내가 PHP를 위해 싶습니다
은과 같이 스레드 수 : "스레드"N보다가있는 경우에 대한
- 기다립니다 각 성취
- 하나는 현재의 성과를 계산하기 위해 스레드 떨어져
- 포크를 완료하고 그 결과 라인을 반향하는
PHP에서 그런 일이 가능합니까?
아니면 완전히 잘못된 방향으로 가고 있습니까? 각 업적 그룹별로 AJAX 요청을 보내야합니까? 성취마다 하나씩? 대안으로 무엇을 제안 하시겠습니까?
성능 병목 현상은 정확히 어디에서 발생합니까? 단일 성취도를 계산하는 것이 상대적으로 빠르다면 성취도 당 하나의 아약스 요청을 발행해도 괜찮습니다. 또한 크론 작업을 고려해 보셨습니까? (단점 : 사용자가 업적을 실시간으로 볼 수 없음) – bfavaretto
@bfavaretto 대부분은 거의 순간적이지만, 좀 더 복잡한 데이터를 수집하고 처리해야하기 때문에 오래 걸릴 수도 있습니다. 나는 업적을 갱신하기 위해 cron을 사용하는 다른 게임을 해왔고, 나는 그것을 싫어했다. "나는 지금 나의 업적 *을 원한다."라고 나는 말할 것이다. –
나는 당신이 생각했다. 일부 브라우저에서는 적어도 부분적으로 responseText를 읽을 수 있습니다. http://www.kylescholz.com/blog/2010/01/progressive_xmlhttprequest_1.html. – bfavaretto