2013-03-15 5 views
1

set_time_limit(0)for(;;)을 사용하여 끝없이 루프하도록 구성된 PHP 스크립트가 있습니다. 이 스크립트는 특정 디렉토리에서 수신 대기하고 파일을 기다리는 코드입니다. 파일이 발견되면 몇 가지 명령을 실행하고 루프를 계속 진행하십시오. 지금까지 이것은 나의 필요에 대해 매우 성공적 이었지만 걱정이 있습니다.디렉토리에서 수신 대기하는 PHP 스크립트

PHP에서 무한 루프를 만들 때 성능상의 단점이 있습니까? 이 스크립트가 실행을 멈추지 않도록 서버를 구성하려면 어떻게합니까? 또는 달리기가 멈 추면 알려주 는가? 시작시에도 실행하고 싶습니다. SUSE SLES 10 상자가 있습니다.

+1

runnin 무한 루프에는 문제가 없습니다. 한 번 잠자기를 기억하십시오. 그렇지 않으면 스크립트가 CPU주기를 아침으로 먹을 것입니다. – h2ooooooo

+0

'cron'을 사용할 수도 있습니다. –

+0

좋아. 'do stuff'부분에서 sleep()을 사용하고 있지만 파일이 실제로 감지 된 경우에만 발생합니다. 파일을 찾았는지 여부에 관계없이 모든 루프의 끝에서 sleep()을 사용해야합니까? – Darius

답변

1

이 방법이 효과가있을 수 있지만, PHP는 실제로 이러한 종류의 데몬과 유사한 작업을 위해 설계되지 않았습니다. Linux/Unix는 inotify과 같은 맞춤형 도구를 사용하여 성능이 향상되고 변경 이벤트가 발생할 경우 PHP 스크립트를 트리거 할 수 있습니다. (: memcached를, APC 등) 대신 파일에 액세스하는 메모리를 액세스하는 것보다 더 많은 비용 때문에 파일을 사용 Monitor Directory for Changes

+1

++ PHP에는 Inotify 확장이 있습니다. – cdarke

0

당신은 메모리 사용을 고려할 수 있습니다

이 SO 질문을 참조하십시오. 그리고 시간 간격을 더하기 위해 약간 sleep() s를 사용하는 것을 고려하십시오.

관련 문제