2011-03-21 9 views
0

내 CGI 스크립트에서 다른 서버로 길게 (최대 10 초) 요청을 보내고 결과를 파싱하고 내 사용자에게 응답을 표시합니다 (AJAX를 통해). 그러나 다른 서버 소유자는 그래서 10 초당 1 개 요청보다 더 각 요청을 수행하기 위해 저를 요구하지 : 내 사용자의 각 요청을 저장해야CGI 스크립트 대기열을 에뮬레이트하는 방법은 무엇입니까?

  • ;
  • 매 10 초마다 하나의 요청을 다른 서버에 보낼 수 있습니다.

먼저 Cron은 간단한 텍스트 파일 (큐 파일)을 열고 첫 번째 줄을 읽고 다른 서버에 요청으로 보냅니다. 그 후 결과를 다른 파일에 저장합니다 (여기서 모든 결과를 캐시합니다). 따라서 CGI는 캐시 파일을 먼저 검사하여 그 결과를 찾으려고합니다. 결과가 발견되지 않으면 대기열 파일 (Cron의 경우)에 작업을 저장합니다.

내 사용자가 너무 오래 시간을 기다려야합니다 수 있도록 그러나 크론 분당 한 번만 실행 ...

을 그래서 CGI를 통해이 작업을 수행 할 수 있습니까?

가 될 수있다

  1. 추정 시간이 요구 을 완료하는 것입니다 캐시 파일 CGI를 확인한 후 내가이있어 할 수있는 (그리고 가 HTML이 추정 시간을 보내 (현재 큐 파일을 읽고) 시간과 이 시간 이후에 또 다른 요청을하십시오. via AJAX).
  2. 그 후 큐 파일과 포크 에 대한 요청을 저장합니다. 분기 된 프로세스는 요청이 큐의 맨 위에있을 때까지 기다리고 다른 서버에 요청할 것입니다.

  3. 그 결과는 캐시 파일 에 저장됩니다. 어떻게 생각하니?

일부 작업은 이미 작성된 모듈 일 수 있습니까?

답변

1

하나의 옵션은 원격 서버에 대한 모든 요청을 처리하는 로컬 데몬/서비스 (Linux/Windows)를 만드는 것입니다. 웹 서비스는 개인 포트/소켓을 제외하고는 동일한 프로토콜을 사용하는 원격 서비스 대신이 데몬과 통신 할 수 있습니다. 데몬은 웹 서버/응용 프로그램과 10 초마다 요청을 받아 들일 수 있습니다. 보류중인 요청이 있으면 원격 서버로 보낼 수 있고 응답이 있으면 들어오는 요청 소켓으로 다시 전달할 수 있습니다. 이 데몬을 단순히 대기열 기능을 추가하는 프록시 서버라고 생각할 수 있습니다. 데몬은 실제로 들어오는 요청이나 결과를 구문 분석 할 필요가 없습니다. 각각의 경우 목적지로 비트를 전달합니다. 대기열 및 네트워킹 기능 만 구현하면됩니다.

관련 문제