2011-07-04 6 views
1

PHP로 API를 통해 시작, 중지, 일시 중지, 재개, 일정 변경을 할 수있는 crontab 대안을 알고 계십니까?PHP에서 API를 통해 시작, 중지, 일시 중지, 재개, 일정 변경을 할 수있는 crontab 대안이 있습니까?

아니면 crontab에서 가능합니까?

나는 cron에 의해 실행되는 장기 실행 PHP 스크립트가 있습니다. 스크립트를 실행하는 동안 cron을 일시 중지하거나 스크립트가 실행되는 동안 PHP 스크립트를 다시 실행하지 않도록 일정을 조정해야합니다. 스크립트가 실행 된 후 cron을 다시 시작합니다.

+2

동시 실행 잠금의 문제가되어야한다 (그리고 가능) 편집 일정하지 않고, 스크립트 자체에서 해결했다. – zerkms

답변

2

당신이 지방 컨트롤러를 사용할 수 확인 잠금에 대한 책임이 있다는 가정하에 공격적인 타이밍 (5 분마다 말)까지 설정할 수있는 C로 작성된 데몬으로, 기본적으로 모든 것을 실행할 수 있고, 반복 할 수 있습니다. 모든 프로세스 논리를 추상화하므로 PHP 스크립트에서 비즈니스 로직 만 유지하면됩니다. 하나의 인스턴스 종료와 다음 시작 사이의 간격 설정, 오류 발생시 더 긴 간격, 로깅 및 원하는 경우 스크립트의 많은 인스턴스를 병렬로 실행할 수있는 기능을 포함하여 완전히 구성 할 수 있습니다.

웹 사이트는 여전히 약간 기본이지만, 많은 정보가 있으며 도움이 필요하거나 질문이 있으시면 연락해주십시오. 기꺼이 도와 드리겠습니다.

http://www.4pmp.com/fatcontroller/

+0

와우, 고마워요. 문제가 생겼을 때 연락 드리겠습니다. –

+0

안녕하세요. 다음 주에 새로운 웹 사이트를 만들고 v0.0.3을 갖기를 바랍니다. – SlappyTheFish

+0

프로젝트 및 기사에 대한 설명은 http://www.4pmp.com/2011/02/daemonize-php-properly/ 정확히 내가하고 싶은 일이며 프로젝트를 볼 것입니다. –

1

작업 대기열을 시도해야합니다.

일부합니다 (Zend Job Queue처럼) 순수 PHP에서이 구현 또는 beanstalkd 같은 데몬 서비스를 설치 (같은 PHP-API를 Pheanstalk합니다.)

+0

저는 이미 기어맨을 사용하고 있습니다. 난 그냥 작업이 실행될 때 설정을위한 데이터베이스를 확인하는 PHP 스크립트 (cron을 통해)를 실행해야합니다. 그러면 PHP 스크립트가이 일을 기어맨에게 보냅니다. 내 PHP 스크립트 gearman 클라이언트 역할을합니다. –

4

당신은 당신의 PHP 스크립트로 locking 로직을 추가 할 수 있습니다. 예 : 스크립트는 잠금 파일의 존재 여부를 점검하고 존재하는 경우 중단 할 수 있습니다. 그렇지 않으면 파일을 작성한 후 삭제합니다. 마지막으로 실행 한 시간을 확인하는 등의 추가 논리를 스크립트에 추가 할 수 있으며, 1 시간 이내에 마지막으로 실행 한 경우 중단 할 수 있습니다.

cron 작업에 관해서는, 당신은 스크립트가, 마지막 실행 시간 등

+0

"예 : 스크립트가 잠금 파일의 존재 여부를 확인하고 존재하는 경우 중단 할 수 있습니다." --- 잠금을 위해 이미'flock() '이 있다는 것을 추가 할 것입니다. 이것은 조건부 레이스가없는 해결책입니다. 그러나이 문제 때문에 잠금 파일조차도 좋은 해결책이 될 수 있습니다. +1 – zerkms

+0

이것은 좋은 해결책이며 결코 그런 생각을하지 못했습니다 –