2012-02-04 7 views
0

다음 작업을 수행하기위한 몇 가지 아이디어를 찾고 있습니다. 꽤 오랫동안 특정 작업을 수행하려면 PHP 스크립트가 필요합니다. 이것은 CMS의 확장이며 이것은 PHP가 아닌 다른 것일 수 없습니다. 또한 명령 줄 스크립트 일 수도 없으므로 CMS의 표준 방법 만 사용하는 일반 사람들이 사용해야합니다. 옵션 중 하나는 스크립트를 자주 트리거하는 cron 작업 (대부분의 단순한 호스팅이 있음)을 갖는 것이므로 장시간 작업하는 대신 한 발사에서 다음 발사로 상태를 보존하는 단계별로 작업을 수행 할 수 있습니다. 이것은 완벽하지는 않지만 다른 솔루션은 볼 수 없습니다. 스크립트가 서버로 리디렉션되는 경우 서버가 중단됩니다. 어떤 다른 옵션이 적합할까요?영원히 작동하는 PHP 스크립트 :

미리 감사드립니다.

+1

그래, 우리는 사전에 당신의 감사를 바라지 않는다. 우리는 사실 후에 당신의 감사를 원한다;) – andrewtweber

+0

PHP의 기능은 밤에 제거되지 않는다. 스크립트가 실행되기 전에 PHP 업그레이드로 인해 CMS (복잡성에 따라 다름)가 손상 될 가능성이 있습니다. – kba

답변

2

당신이 이야기하는 것은 클라이언트 프로그램에 의한 호출, 수행 및 동작을 기다리고 더 많은 호출을 기다리는 응답을 제공하는 데몬 또는 장기 실행 프로그램입니다.

당신은 아파치 & MySQL의 형태로 익숙 할 것입니다.) PHP는 일반적으로이 점에서 괜찮습니다. 원시 소켓이나 다중 서브 프로세스를 통해 여러 요청을 처리 할 수 ​​있습니다 동시에.

PHP 데몬은 YMMV가 사용되는 도구라고합니다. 어떤 사람들은 자신들이 잘 작동한다고 말하고, 나 같은 다른 사람들은 unset() 호출이 많아도 프로세스 간 통신 및 메모리 누수와 관련된 문제가 있다고 말할 것입니다.

어쨌든 공유 호스트 환경에 어떤 유형의 데몬도 배포 할 수 없을 것입니다. 더 나은 서버 패키지를 얻거나 Cron 기반 솔루션을 사용해야합니다.

Here's a link PHP 데몬 작성에 대해.

또 하나 더주의하십시오. 데몬은 수시로 충돌하기 때문에 어떤 사람이 전원 코드를 통해 공유 서버로 이동하는 경우에 대비하여 상태를 저장해야 할 수도 있습니다.

+0

감사합니다. 이것은 좋은 선택이지만 널리 배포 된 소프트웨어의 일부가 될 것이기 때문에 대부분의 사람들은 스크립트를 PHP 데몬으로 시작할 수 없게됩니다. – AndreyM

+0

좋습니다. 그렇지만 근본적으로 '영원히 뛰는'프로그램은 무엇입니까. 넓은 배포판을 생각하고 있다면 Windows가 원하는 플랫폼이라면 cron을 목록에서 건너 뛸 수도 있습니다. 아파치 내부에서 장시간 실행되는 프로그램을 에뮬레이트하는 몇 가지 기법이있다. (http://moxune.com/blog/2011/04/non-blocking-web-service-processing-in-php/) 가장 좋은 프로그램은 왼쪽에서 짧은 것입니다. * nix 시스템에서 루트 액세스 권한을 가진 사람은 누구나 데몬을 실행하거나 설치할 수 있습니다. 공유 호스팅 시스템이 소프트웨어의 대상이라면 cron은 갈 길이 멀지 않습니다. – quickshiftin

+0

예, 대몬이 무엇인지 알고 있습니다. 확장 기능을 다운로드하고 CMS의 표준 방법 (확장 파일 선택 후 "설치")을 사용하여 설치하는 사람들을위한 것이 아니면 정말 좋은 옵션입니다. – AndreyM

1

데몬은 그렇지만 그다지 사용하지 않는다면 시간 초과가되지 않고 아무런 방해를받지 않도록 간단히

set_time_limit(0); 
ignore_user_abort(true); 

을 사용하면됩니다. 그런 다음 cron에서 호출하여 매일 시작하십시오. 나는 많은 긴 처리 일일 작업에 이것을 가지고 있으며 그것은 나를 위해 큰 작품. 그러나 외부 세계와 쉽게 대화 할 수 없습니다 (다른 스크립트는 쿼리 할 수 ​​없거나 무엇이든 PHP 서비스를 살펴보고 싶을 것입니다). 일단 실행 시키면 멈출 것입니다. 진행 상황을 로그 파일로 출력하게하십시오.

+0

나는 이것을 염두에 뒀지 만 호스팅 제공 업체가 서버를 모니터링하여 이러한 스크립트를 발견하고 중단하는지 궁금합니다. 또한 호스팅 제공 업체가 언급 한 옵션을 변경하는 기능을 사용하지 못하게하는 방법이 있는지 궁금합니다. – AndreyM