2010-07-22 2 views
3

나는 n 분마다 실행해야하는 스크립트가 있습니다. n 분이 동적이므로 cron 작업을 설정하여 특정 시간에 스크립트를 호출 할 수 없습니다.PHP time_sleep_until()과 "MySQL 서버가 없어졌습니다"

그래서 내가 수행 한 모든 시간은 n 분 후에 배열에 저장되므로 스크립트가 실행될 때 먼저 현재 시간이 배열에 있는지 확인합니다. 배열에서 발견되면 계속 실행하고 그렇지 않으면 종료합니다.

스크립트를 실행하려면 cron 작업을 사용하여 매분마다 배열의 시간을 확인해야합니다. 불행히도, 내 웹 호스트는 최소 간격으로 5 분만 허용합니다. 그래서 스크립트가 호출 될 때마다 $current_time$current_time + (4*60) // 4 minutes 사이의 값이 배열에 있는지 확인합니다. 필요하다면 나는 time_sleep_until을 사용하여 시간이 배열에있는 값에 도달 할 때까지 스크립트를 지연시킵니다.

내 스크립트가 10:05에 실행되고 배열에있는 값이 10:06 인 경우 실행을 계속하기 전에 10:06까지 스크립트를 잠자기 상태로 둘 수 있습니다. 그러나 수면 시간이 1 분 정도면 Mysql server gone away이됩니다.

어떻게 방지 할 수 있습니까? 또는 이것을 할 수있는 더 좋은 방법이 있습니까?

감사합니다.

+3

수면 전에 연결을 끊고 다시 연결 하시겠습니까? – Charles

+0

은 그것을 생각하지 않았고 시도 할 것입니다. 감사! – u11

+0

찰스 덕분에 성공했습니다! – u11

답변

3

몇 가지 선택 사항은 잘 모르겠습니다.

하나는 스크립트가 CLI와 작동하는지 확인한 후 그 시간이 지나면 http://www.php.net/exec 함수 (호스트에서 허용하는 경우)로 호출하십시오.

둘째, 가능한 해시를 키로 설정하고 분이 끝난 후 헤더 리디렉션을 사용하면 스크립트를 새로 호출하여 새로운 MySQL 연결을 만듭니다.

세 번째 옵션은 해당 페이지를 여는 컴퓨터에 schedule task/cron 작업을 설정하는 것 (웹 루트에 있어야 함)을 설치하고 1 분마다 호출하는 것 외에는 두 가지처럼 스크립트를 설정하는 것입니다. 필요. 이는 설정된 방법이 아니지만 컴퓨터 사용량에 따라 다릅니다. 도움이 http://www.onlinecronjobs.com/en

희망 : 세 번째와 유사한

넷째,하지만 같은 호스팅 서비스를 무료로 cron 작업을 사용합니다. 다른 옵션을 생각하면 업데이트 할 것입니다.

+0

내가 처음 익숙하지 않아서 처음 두 가지를 확인해 보겠다. 나는 3 번째로 갈 수 없다. 나는 좋은 온라인 서비스가 있다는 것을 몰랐습니다. 도와 주셔서 감사합니다! – u11

+0

비슷한 문제에 대한 두 번째 제안을 사용했습니다. 이번에는 최대 실행 시간이었습니다. 감사합니다! – u11

관련 문제