2011-03-13 7 views
2

안녕 모두 내 PHP 프로젝트에 Zend 프레임 워크를 사용하고 있습니다. 기본적으로 나는 자동으로 실행하려는 몇 가지 작업이 있습니다. 트릭을하기 위해 크론 작업을 사용할 것입니다. cron 작업은 PHP 스크립트 파일을 실행합니다.PHP에서 작업을 예약하는 방법은 무엇입니까? (저장 및 실행 기술)

지금까지 모든 것이 정상적인 것처럼 보입니다. 이제는 데이터베이스에 테이블을 만들고 거기에 실행해야하는 작업을 저장했습니다. 예를 들어 다음을 수행해야합니다.

1 - 샘플 파일을 만듭니다 (5 번).

2 모든 샘플 파일을 업로드하십시오 (1 회).

3 메일 보내기 (연속).

그래서 컨트롤러와 액션 (샘플 파일 생성)을 테이블에 저장하고 반복 시간을 5로 설정하고 실행 시간도 설정합니다. 다른 두 가지 작업에 대해서도 동일한 작업이 수행됩니다.

이제 스크립트 파일이 1 분마다 실행됩니다. 스크립트 파일에서 현재 시간과 동일한 실행 시간을 가진 테이블의 모든 레코드를 선택한 다음 실행합니다.

이제이 시스템은 실제로 작동하지만 실제로 더 잘 작동하거나 개선 된 스케줄러 기술에 대해 생각하고있었습니다. 테이블에 스케줄 된 동작을 저장하는 것은 좋은 생각이지만, 탁월한 접근 방법이 있는지 궁금해하고있었습니다.

+0

얼마나 자주 변경되며 어떤 인터페이스를 통해합니까? – alex

+0

잘 예약 된 작업을 제어하기위한 UI 화면이 있습니다. 간단히 사용자는 테이블에 추가하려는 작업을 드롭 다운에서 선택할 수 있으며 작업의 시간과 반복을 지정합니다. 사용자는 테이블의 모든 작업을보고 수정할 수 있습니다. 작업 자체는 한 번 정의되며 드롭 다운에로드됩니다. 사용자는 데이터베이스의 cronjobs 테이블에 추가 할 작업 수를 선택할 수 있습니다. 변화의 빈도는 우리가 아직 개발 단계에 있기 때문에 비즈니스 필요에 따라 달라질 수 있습니다. – Songo

답변

0

이것은 나에게 좋을 것 같습니다. cron 작업을 사용하여 데이터베이스 테이블에서 실행될 일치하는 레코드를 선택하는 PHP 스크립트를 실행하고 있습니다. 데이터를 데이터베이스에 정규화 된 양식으로 저장하는 것이 효율적인 방법입니다. 서버의 부하를 모니터링하고 필요한 경우 조정하십시오.

+0

잘 cron 작업 시스템을보다 일반화하여 모든 응용 프로그램이나 데이터베이스에서 작동하도록 요청 받았기 때문에 새로운 아이디어를 찾고있었습니다. 그래서 내가 할 수있는 뭔가가 있다고 생각한 것입니다! – Songo

0

My aproach에는 테이블을 "비우기"(작업을 "완료"로 설정)하는 순환 스크립트가 있습니다. 그리고 테이블을 채우는 타이밍이 다른 CRON이 더 있습니다. 따라서 워크 플로는 다음과 같습니다.

minute: nothing to do 
minute: nothing to do 
hour: added export feed update 
minute: export feed update finished 
minute: nothing to do 
minute: nothing to do 
minute: nothing to do 
minute: nothing to do 
... 
minute: nothing to do 
five_hours: added "clear the cache" 
minute: clear cache finished 
minute: nothing to do 
minute: nothing to do 
... 
관련 문제