2009-11-10 3 views
3

자동 입찰 시스템을 사용하는 경매 웹 사이트를 만들고 있습니다. 이 시스템은 사람들이 거기에있을 필요없이 입찰 할 수있게 해줍니다.자동 데이터베이스 읽기/쓰기 매시

제 질문은 이러한 시스템을 구현하는 방법입니다. PHP 파일을 만들었고 모든 것이 준비되었습니다. 매 초마다 새로 고치는 html 페이지를 만들었습니다. 그것은 작동하지만 더 나은 솔루션이 있는지 궁금합니다.

내가 시도한 두 번째 옵션은 매초마다 웹 페이지를 여는 자바 응용 프로그램을 만드는 것입니다. 이것은 많은 메모리/CPU를 소비합니다. 또한 어딘가에 메모리 누수가 있다고 생각합니다.

나는 centOS와 Plesk가있는 전용 Linux 서버에서이 응용 프로그램을 실행하므로 많은 대안이 있다고 확신합니다. 예를 들어

:

  1. PHP 파일을 PHP 파일이 잠 가진 분 루프 분마다, 실행 cronjob에.

  2. 1 초 동안 반복되는 하나의 PHP 파일이 잠자기 상태가됩니다.

  3. 1 초 후에 다른 cronjob을 실행하고 예약하는 cronjob.

  4. MySQL 스케줄러를 구현하는 방법을 모르겠지만 다른 쓰기를 위해 db를 잠그는 것을 들었다.

  5. 또한 cli, perl, python 스크립트에 대해 들었지만 그 중 하나에 익숙하지 않습니다.

이 옵션에 대한 지식이있는 사람이라면이 주제에 대한 저의 의견을 밝힐 수 있습니까? 속도와 메모리 사용 측면에서 가장 적합한 솔루션을 찾고 있습니다.

누군가 다른 대안 솔루션을 가지고 있다면 나도 그 이야기를 듣고 기뻐할 것입니다.

+0

내부 상태 (데이터베이스, 경매 등)를 업데이트하기 위해 서버 측에서 PHP를 실행해야합니까, 아니면 클라이언트의 웹 페이지를 자동으로 업데이트해야합니까 (진행 상태, 입찰 등 표시)? – csl

답변

2

1 초마다 작은 간격으로 cronjobs를 사용할 수 없으므로 성능이 중요하기 때문에 "웹 페이지"를 사용하지 말 것을 강력히 권합니다. CLI를 위해 작성된 스크립트 만 수행하면됩니다.

는 내가 뭘 할 것은 :

  • 은 누군가가 당신이 데이터베이스에 그 등록해야 자동 입찰 를 활성화합니다.
  • 해당 시점에 실행할 항목에 대해 데이터베이스를 폴링하는 데몬을 만듭니다.

, 각 사이클 후 스크립트 잠을 만드는 매우 조심 누구든지이 필요하거나 당신은 당신의 데이터베이스를 가져올 것이다.

사이드 노트에서 매초마다 실행해야합니다. 내 생각에 자동 입찰가는 이벤트 (예 : 10 초 남았을 때 다른 사람이 입찰하는 것)에 의해 트리거됩니다. 구현하기가 훨씬 좋고 자원 집약도 좋을 것 같습니다 (자동 입찰 이벤트를 수신하면서 데몬을 사용할 수도 있지만 그 또 다른 이야기입니다 :)

2

주어진 시간 간격으로 문제의 PHP 스크립트를 실행하는 크론 작업을 만듭니다. 문맥에 의존하지 않는 방식으로 작성된 경우 execute the PHP script from the command line ($_GET, $_POST 및 이와 비슷한 액세스 권한이 필요하지 않음)을 사용할 수 있습니다.

0

이미 작업중인 페이지가있는 경우 매주 curl 명령을 호출하는 cron을 예약 할 수 있습니다 (curl http://your/page.php). 유일한주의 사항은 페이지가 외부에서 호출되면 페이지를 보호해야 할 수 있다는 것입니다.

1

글쎄, 당신은 일종의 "이벤트 기반 기본적으로 데이터가 데이터베이스에 삽입되면 일어날 일을 유발한다는 것을 의미합니다.

사례, MySQL 트리거 또는 심지어 새로운 입찰가에 대해 INSERT하는 다른 PHP 입찰가가 그 입찰가보다 높은 최대 입찰가를 설정했는지 확인하는 간단한 PHP 스크립트입니다.
그런 경우 새로운 최고 입찰가와 현재 최고 입찰자를 업데이트하십시오.

입찰자 수가 많은 경우 루프를 실행하고 누가 최고 입찰가를 얻는 지 확인할 수 있습니다.

핵심은이 비즈니스 문제를 파악하기 위해 실제로 돌아 다니고 예약 된 작업을해서는 안된다는 것입니다. 트리거 나 이벤트를 사용하는 것이 좋습니다.

관련 문제