2010-06-22 3 views
0

그래서이 빠르고 빠지기 쉬운 모듈을 현재 시간을 사용하여 문자열을 에코하고 x 분을 대기하고 다른 문자열을 에코하는 프로그램에 작성하려고합니다. 유일한 것은이 작은 모듈이 끝날 때까지 프로그램의 나머지 부분을 멈추게하는 것입니다. 이 주변의 어떤 방법?스크립트 일시 중지/지연이없는 PHP 타이머

+0

x 분 전에 프로그램이 중지되거나 충돌하는 경우 어떻게됩니까? 다른 PHP 스레드를 시작하고 PID를 공유하는 등 몇 가지 방법이 있습니다.하지만 그 경로를 가고 싶습니까? –

+0

멈추거나 멈추는 것만큼이나 멈추거나 부서지는 것이 아닙니다. 이 작업을 시도한 모든 방법이 작동하지만 할당 된 시간이 끝날 때까지 나머지 프로그램을 일시 중지하므로 작동 할 수 없습니다. – Francis

+0

맞아요. 좋은 이유가 있습니다. PHP는 기본적으로 이벤트 나 멀티 쓰레딩을 지원하지 않습니다. 여러분이하려고하는 것에 대해 더 나은 해결책이있을 것이라고 생각합니다. –

답변

0

실행중인 현재 프로세스를 복제하여 1 개의 프로세스를 대기 상태로두고 다른 프로세스는 수행해야 할 작업을 수행 할 수 있습니다.

는 트릭을 할 것입니다 포크 (fork) 당연히 pcntl_fork

0

를 사용해야하는 PHP 프로세스를 포크, 그런데 왜 PHP에서 ticks functionality을 사용하지 않으려면?

이 예제를 고려하십시오

declare(ticks=1); 

function tick() { 
    // check if the interval is correct before proceding 
    $mem = memory_get_usage(true); 
    echo "Using $mem bytes right now"; 
} 

register_tick_function('tick'); 

// do all kinds of things in your main program here 
while(true) { 
    usleep(50000); 
} 

수동으로 실행하지 않고, 주기적 틱 함수를 호출합니다 자고있는 동안. 단 하나의주의 사항은 특정 작업이 완료하는 데 매우 오랜 시간이 걸리면 (예 : 데이터베이스 쿼리)이 작업이 완료 될 때까지 틱은 실행되지 않습니다.