MySQL 데이터베이스에 시간을 기록한 데이터베이스가 있습니다. 1000 개 이상의 항목이 있습니다. 그 시간에 정확하게 시간을 추출하고 PHP 스크립트를 실행하고 싶습니다.PHP 스크립트를 연속적으로 실행하십시오.
PHP 스크립트를 지속적으로 실행하려고 시도했지만 서버가 60 초 이상 스크립트를 실행할 수 없습니다.
EDIT. 매초마다 데이터베이스를 확인해야합니다. 어떤 대안이 있습니까?
MySQL 데이터베이스에 시간을 기록한 데이터베이스가 있습니다. 1000 개 이상의 항목이 있습니다. 그 시간에 정확하게 시간을 추출하고 PHP 스크립트를 실행하고 싶습니다.PHP 스크립트를 연속적으로 실행하십시오.
PHP 스크립트를 지속적으로 실행하려고 시도했지만 서버가 60 초 이상 스크립트를 실행할 수 없습니다.
EDIT. 매초마다 데이터베이스를 확인해야합니다. 어떤 대안이 있습니까?
를 사용하여 배 패키지, http://pear.php.net/package/System_Daemon/
+1 System_Daemon. 멋진 PEAR 패키지, Gearman Workers와 함께 사용합니다. – Urda
유닉스의 cron을 사용해보십시오.
스크립트를 실행하려면 외부 서비스가 필요합니다. 유닉스 박스에서는 cron이 될 것입니다. Windows 상자에서 Task Scheduler을 사용하십시오.
프로세스를 서버 데몬으로 작성하는 것에 대해 생각해 보셨습니까? 그것은 시작되고 while 루프에서 영원히 돌아갈 것입니다. 몇 분마다 또는 종종 다음 번 실행 시간을 확인할 수 있습니다. 요청을 큐에 넣고 그 시간이 다가올 때마다 실행해야하는 스크립트를 시작합니다. 나는 cron이 당신이 임의의 시간에 미래의 이벤트를 스케쥴하려고 할 때부터 당신이 원하는 것을 생각하지 않는다 ... 그리고 나는 그것이 매초마다 db를 확인하고 시도하기 위해 현재 사용하고있는 것이라고 확신한다.
예. 매초마다 DB를 확인해야합니다. 다른 해결책이 있습니다. 왜냐하면 반복적으로 질의하는 것은 매우 번거롭기 때문입니다. – nicky
다음 X 분 이내에 실행해야 할 때마다 X 분마다 확인하십시오. 그래서 뭔가가 다음과 같습니다 : 시간을 선택하십시오. 시간
당신은 계속 다음 주어진 시간의 PHP 스크립트를 일시 중지하고 sleep(arg)
기능을 사용해야합니다.
sleep(50); //Pauses
myFunction(); //Runs after the pause
예를 들어, 스크립트를 50 초 동안 일시 중지합니다.
이 해결책은'max_execution_time' 매개 변수가 매우 높은 값 (절대 최대 값이 무엇인지 모르겠습니다)과'set_time_limit()'함수 및 가능하면 다른 변수로 설정된 경우에만 작동합니다. 예를 들어 스크립트를 1 주일 또는 1 달 동안 실행하고 싶다면 효율적인 솔루션은 아니지만 짧은 실행 시간에 매우 지연된 루프에서 작동 할 수 있습니다 –
실행중인 프로세스를 유지 원하는 시간
에서 실행되는 스크립트를 만들기 위해 데이터베이스에서 읽고의 crontab에 항목을 추가하는 PHP 스크립트를 작성하면해야하지 적어도 때문에, 매우 좋은 해결책이 아니다 계속해서 작동하는지 확인하십시오. 아마도 다음 번에 일어날 때를 알 수 있습니다. 'atd'를 사용하여 일정을 잡으십시오. 트리거 될 때 스크립트는 다음 작업을 예약 할시기와 방법을 사용해야합니다. 하나의 실패가 체인도 ATD의 대부분의 구현의 단위 오히려 높을 수있다 나누기 -
이 작업이 연쇄되는 것을 의미한다.
당신은 Nagios를 같은보다 정교한 예약 도구 또는 DJB의 데몬 툴즈 나 오라클의 OPMN 같은 프로세스 모니터링 유형의 접근법을 사용하여보고 할 수 있습니다.
C.
System_Daemon
DJB의 데몬 툴즈는 중대하다. 그래서 Remnant가 진정한 변덕쟁이 역할을하지만 Systemd 및/또는 Upstart입니다.
권장되는 배 패키지 - system_daemon이 좋습니다. 참조 신출내기
어떻게 cron 작업을 통해 스크립트를 실행하는 방법에 대한 그러나, 저자는 이제 우분투에서 쉽게 사용할 수 새 기능을 사용하는 것이 좋습니다? – jamieb
크론 작업은 좋은 생각이지만 너무 많은 시간이 걸리는 데이터베이스와 현재 시간에서 시간을 확인하기 위해 쿼리를 실행해야합니다. 그렇게 할 대안이 있습니까? – nicky
set_time_limit (0)을 사용할 수 있습니다. 귀하의 PHP 스크립트가 "영원히"실행되도록 약 1 일 후에 스크립트는 1GB 이상의 메모리를 사용하게됩니다. PHP의 메모리 관리자는 매우 원시적입니다. 오랜 시간 동안 1 프로세스를 실행하려면 Java를 사용하거나 C++을 작성해야합니다. – rook