2011-08-19 4 views
0

최근에 나는 경매 사이트를 만들고있었습니다. 나는 사용자가 아이템을 입찰 할 때와 같이 만들고 싶다. 사용자를 비싸게하는 AI 입찰자가있다. 5 초 후에 item1에 대한 사용자 입찰로 AI 입찰자가 자동으로 item1을 입찰합니다. 어떻게 5 초 후에 자동으로 실행할 수 있습니까?서버 측에서 자동으로 함수를 실행하는 방법

+1

사기와 비슷합니다. – Jacob

+0

이것은 실제로 경매 사이트입니다. 실생활이 아닌가. – user236501

+0

많은 옵션이 있습니다. 하나는 현재 당신이 만든 것에 대한 세부 사항에 따라 다릅니다. –

답변

0

간단하고 효율적인 해결책은 "만기일"과 향후 모든 입찰을 저장하고 목록에 입찰 할 모든 정보를 저장할 수 있습니다. 그러면 매 5 초마다 목록을 반복하고 만기가되면 모든 입찰을하십시오. 이 시스템은 확장 가능하며 많은 양의 입찰에 적용됩니다. 물론, 이것은 다른 스레드에서 실행되는 것이 이상적입니다.

서블릿에 "cron-like"작업 관리를 다시 구현하는 것과 비슷하지만 사용자의 필요에 맞는 솔루션을 찾을 수 없습니다.

귀하의 질문에 대한 답변을 확신 할 수 없습니다.

0

는 당신이 실제로 무엇을 사용 기술에 따라 다릅니다

안부, 스테판, 당신은 새로운 입찰 (잠시 후) 타이머 시간 제한에 발생하는 경우 예를 들어, 바로 타이머 EJB를 시작 그것을 위해 EJB 타이머를 사용할 수 있습니다 메소드는 입찰을 실행하고 업데이트합니다.

0

표준 서블릿 솔루션

  1. 하는 Filter 만들기 입찰 서블릿의 URL 패턴에 매핑.
  2. doFilter()에서 filterChain.doFilter() 호출 (예 : 요청이 서블릿/JSP에 의해 처리 된 후) 후에 향후 5 초 동안 조치를 예약하십시오 (표준 java ScheduledExecutorService을 사용할 수 있음).)
  3. Runnable 구현에서 (작업) 일정을 잡고 AI 입찰을 배치하십시오.
0
제 생각에는

:

  1. 하면 사용자 입찰, 5 초 후에는 서버에 요청을 전송, 내가 setTimeout()JS을 선호합니다. (물론 Browser 's JS가 필요합니다 - W3School에서 더 많이 읽어보십시오).
  2. 그렇지 않으면 배열 (또는 그와 유사한 smt)을 대기열 (서버 측)로 사용할 수 있습니다. 각 5 초 후 대기열을 잠급니다 (동기화). 5 초 전에 삽입되었는지 확인하고 처리합니다. 이벤트가 서버에 요청할 때마다 Thread을 사용하십시오. 기본적으로 스레드를 사용하여 그 트릭을 할 수 있습니까? (이 뜻 이었습니까?).
관련 문제