2012-09-11 4 views
3

저는 매 5 ~ 10 초마다 특정 작업을 수행하여 무한정 실행되는 PHP 스크립트를 가지고 있습니다 (do-while 루프, 모든 반복 끝에 데이터베이스를 검사하여 계속해야한다). 이 작업에는 MySQL 데이터베이스 쿼리가 포함됩니다. 데이터베이스 연결을 처리하는 가장 좋은 방법은 무엇입니까? 해야합니까 :PHP 스크립트 무제한 실행, MySQL 시간 초과

.) 연결을 끊은 다음 데이터베이스를 반복 할 때마다 다시 연결해야합니까?

b.) 연결 제한 시간을 무기한으로 설정 하시겠습니까?

c. 데이터베이스를 핑 (ping)하여 아직 연결되어 있는지 확인한 후 실행 및 쿼리하기 전에 필요하다면 다시 연결 하시겠습니까?

d) 다른 것?

편집 : 명확히하기 위해 스크립트는 사용자의 iPhone으로 푸시 알림을 전송합니다.

+0

반복마다 무엇을하고 있습니까? 스크립트를 계속 실행하기 위해 일정 작업/크론 작업을 사용하지 않는 이유는 무엇입니까? – Josh

+0

sidenote : while..do 대신 cron 작업을 사용하는 것이 좋습니다! b) do not do that ever – Wh1T3h4Ck5

+0

PHP 스크립트를 실행 파일 스크립트로 감싸고 DB 연결 오류로 인해 제어 된 방식으로 죽게하는 것이 좋습니다. 당연히 런처 스크립트가이를 다시 시작해야합니다. –

답변

1

PHP 스크립트를 데몬으로 실행할 수 없다는 제안은 터무니 없습니다. 나는 여러 번 해봤고 꽤 잘 돌아 간다. some example code to get you started이 있습니다. 팬이 아닌 경우 PEAR이 필요합니다. 자신 만의 롤을 만드십시오.)

자, 실제 질문에. 정기적으로 쿼리를 작성하는 경우 MySQL 연결이 시간 초과되지 않습니다. 이 시간 초과는 유휴 연결에 대한 것입니다. 확실히 연결 상태를 유지하십시오 ... 연결 해제 및 재 연결의 오버 헤드에 대한 이유가 없습니다. 어쨌든 데이터베이스가 실패하면 스크립트가 데몬으로 실행되기 때문에 프로세스를 즉시 종료하지 않으려 고합니다.

예외를 처리하고 다시 연결하는 것이 좋습니다. 다시 연결하지 못하면 잠시 후 다시 시도하십시오. 몇 가지 실패 (적절한 것이 무엇이든지) 후에, 인간 개입을 필요로하는 무언가가 무너지기 때문에 그 당시의 과정을 죽일 수 있습니다.

+0

Word, thanks Brad! – James