2012-05-19 2 views
0

Oracle을 사용하고 야간 작업 인 일괄 작업 (일괄 처리)을 실행하는 레거시 시스템이 있습니다. 일괄 처리 중 여러 이벤트를 해당 데이터베이스의 여러 테이블에 게시합니다. 이러한 변경 사항을 모니터링 할 수있는 웹 기반 응용 프로그램을 만들고 싶습니다.PHP를 사용하여 데이터베이스 변경 내용 듣기

내 일반적인 생각은 아약스있는 메시지/데이터 (JSON, XML)

  • 을 DB의 변경 (특히, 상기 테이블)을 청취하고 방출하는 PHP 서버/백엔드 응용 프로그램을 만드는

    • 입니다 "등록"되어 구동 형 (HTML5, JQuery와) 웹 응용 프로그램은 PHP 서버에 이러한 이벤트와 메시지

  • 을 기반으로 웹 응용 프로그램에
  • 갱신 다양한 구성 요소를 듣는 사람이 다 헛수를 가지고 이런 식으로 몇 가지 지침이나 방향을 제시 할 수 있습니까?

    이와 같은 프로젝트는 Yii와 같은 PHP 프레임 워크를 기반으로해야합니까? 나는 Yii에 대한 문서를 읽고 db API에 대해 언급합니다.

    사이드 노트 : NodeJS를 사용하여 비슷한 연습을 시도했습니다. 나는 실제 db에 연결하지 않고 대신 서버 코드에서 이벤트를 시뮬레이트했습니다. 다시 말하지만, 그것은 jquery 기반의 페이지로, 서버에서 emits (메시지)를 통해 이벤트를 멋지게 게시했습니다.

    결론적으로, PHP 서비스가 데이터베이스 변경 내용을 듣고 싶습니다. 프런트 엔드 앱을 등록하여 변경 사항을 수신합니다. 업데이트 프런트 엔드.

    감사합니다. Rob

  • +0

    http://dev.mysql.com/doc/refman/5.1/en/events를 조사해야합니다.html 또는 http://www.postgresql.org/docs/8.4/static/libpq-events.html –

    답변

    1

    DB에 연결하려면 PHP가 필요합니다. 그렇지 않으면 클라이언트 측 연결에서 사용자 이름과 암호가 나타납니다.

    웹 앱에서 각 분/초/초당 PHP 스크립트를 호출하기 위해 ajax 호출 (jQuery를 사용하면 jQuery를 사용하십시오.)을 사용하여 PHP 스크립트를 호출 할 수 있습니다. 응답 - 결과에 따라 행동하십시오. PHP 스크립트는 데이터베이스에 연결하여 변경 사항을보고합니다.

    DB 변경을 "수신 대기"하는 별도의 서비스를 원한다면 일반 PHP (broswer로 실행/디버깅 할 수 있음)를 작성하십시오. 이것은 매 분마다 데이터베이스를 모니터링하고 필요한 모든 작업을 수행하는 PHP 스크립트입니다. 당신은 당신이 좋아하는 어떤 프레임 워크라도 사용할 수 있습니다 - 그것은 단지 일반 PHP입니다. 이 기능이 작동하면 "cron"작업으로 설정하십시오. 매분마다 "PHP -q /path/to/yourfile.php"를 실행합니다. 변경이 있으면 PHP는 필요한 플래그를 설정할 수 있습니다.

    자바 스크립트 폴링에 대한 경고 또는 경고 - setInterval() 사용자가 아닌지 확인하십시오.하지만 AJAX 호출이 반환 될 때마다 (또는 반환되지 않을 때) 다음 번에 시작하십시오. 서버가 너무 바빠서 다른 요청을 보내면 더 바쁘게되고 거기에서 내리막 길을갑니다. 따라서 응답을 받거나 다음에 합당한 시간이 지난 후에 응답을받지 못하면 다음 설문 조사를 설정하십시오.

    myresistance.net에서이 작업을 볼 수 있습니다. WordPress 및 SMF 설치를 실행합니다. Wordpress 부분 (블로그/뉴스 비트)을 사용하는 경우 모든 커플이 "ping"함수를 사용하여 데이터베이스를 폴링합니다. 분. 이것은 데이터베이스를 점검하여 SMF 파트에 로그인했는지 또는 로그 아웃했는지 확인한 다음, 필요에 따라 로그 인하거나 로그 아웃 한 경우 WordPress 파트를 다시로드합니다.

    +0

    Neil : 포함 된 이벤트 링크는 매우 흥미 롭습니다. 비록 그들이 "트리거로 취급하지 마십시오"라고 말하면서도 트리거가 오라클에 필요한 것일 수 있다고 생각합니다. 오라클이 비슷한 event_scheduler 기능을 제공하는지 확인해야합니다. 고맙습니다. – Rob

    +0

    Robbie : 그 간결한 대답에 감사드립니다. 내가 읽은 대부분의 것은 백엔드를 폴링하는 클라이언트와 거래한다. 나는 그것이 잘 작동하고 참을성이없는 사용자를 위해 '새로 고침'버튼을 추가 할 수 있다고 확신합니다 :-). 요약하자면 PHP Pgm을 db 및 poll db에 연결해야합니다. 클라이언트가 PHP를 폴링합니다. 분명히이 모든 것을 알아 내야 만하지만 이것은 훌륭한 출발점입니다. – Rob

    관련 문제