2012-12-02 3 views
0

DBMS 지정을 통해 전체 온라인 입찰 웹 사이트를 만들었습니다. 사용자는 시간 초과 입찰에 대해 입찰하고, 시간 약속에 따라 구매하고, 더 많은 것들을 검색하는 등의 많은 작업을 수행 할 수 있습니다. 나는 약간의 예외를 제외하고는 웹 사이트를 완성했다. 사용자가 시간 초과 경매에서 우승하면 그 사용자는 반드시 승자이고 24 시간 이내에 상품을 체크 아웃해야한다는 통지를 받아야한다.PHP에서 이벤트를 모니터링하기 위해 프로세스를 계속 실행하는 방법은 무엇입니까?

필자의 초기 접근 방식은 사용자가 페이지에있을 때 DB를 쿼리하여 입찰 시간이 종료되었는지 확인하고 승자가 누구인지를 확인하는 간단한 PHP 스크립트로 구성되었지만 그 접근 방식에는 두 가지 문제가 있습니다. 1. 사용자가 페이지 쇼핑을하고있는 경우 언제든지 사용자가 상환 여부를 알아 내야합니다. 2. 사용자가 경매가 끝난 후 한 달 동안 사이트에 로그인하지 않으면 경매에서이긴 달을 알지 못해 결제를 위해 24 시간의 창을 놓치게됩니다.

나는 cron 작업에 대해 읽었지 만, 스케줄 된 작업이기 때문에 작업을 효율적으로 처리 할 수 ​​있도록 작업을 예약하는 것이 쉽지 않습니다. 내가 의미하는 바는 계속해서 경매가 끝난 후 즉시 모든 사람이 모르게 알 수는 없다는 것입니다.

또한 PHP exec()에서 읽었지만 일단 exec()가 끝나면 다시 실행되지 않기 때문에이 작업을 실행하는 데 필요한 도구인지 확신 할 수 없습니다.

그래서 내 질문에 누군가는 내가이 작업을 도와주기 위해 무엇을 구현할 수 있는지 생각해 본다.

답변

1

당신은 cron을 사용해야합니다 - 경매가 종료되었는지 DB를 확인하기 위해 매분마다 실행해야합니다. 내가 생각하는 가장 큰 문제는 사용자에게 알리는 것입니다. 사이트에있을 수없는 경우 (또는 임의의 페이지에서이기는 경우) 웹 사이트를 통해 알림에 의존하지 말고 확실히 PHP 요청이 아닌 경우 사이트에 올 수도 있고하지 않을 수도 있습니다. 대신, cron이 호출 한 PHP를 사용하여 승자가 전자 메일을 보내어이를 알리는 것이 좋습니다.

페이스 북을 생각해보십시오 (사용자가 가장 보편적 인 경험 사례를 제공했기 때문에) - 사이트에있는 경우 알림 영역을 제공하지만 잠시 동안 켜져 있지 않은 경우 알림을 전송합니다. 무슨 일이 일어 났는지 알려주는 이메일. 이것이 당신이해야하는 일입니다.

+0

우리는 아주 작은 간격 (매 10-12 초마다)으로 cron을 사용하여 PHP 스크립트를 실행하여 웹 사이트에 이러한 종류의 작업을 수행합니다. – Ross

+0

업데이트 - 여러 호스트를 실행하면서 여러 호스트가로드 균형 조정을 수행하면 통합 뮤텍스 (일종의 DB)를 통해 알림 배달을 조정해야합니다. – Ross

0

cron 예약을 다시 고려해야합니다. 매우 빠른 간격으로 작업을 실행할 수 있습니다.

관련 문제