하나의 값을 얻지 못하는 경우 함수를 생성합니다 -이 경우에는 ok - 다른 시간과 다른 시간을 반복하고 다시 검사하지만, 문제가 발생하면 2 ~ 3 번 확인하면 결국 연결이 끊깁니다.반복 기능
내 기능 :
<?php
function recursive() {
if (file_exists("pol.txt")) {
print "ok";
} else {
print "bad";
usleep(1);
recursive();
}
}
recursive();
?>
아이디어는 기능 시험이 모든 시간을 키우면 다른 기능은 pol.txt라는 파일을 생성 할 때 중지하지만 문제는 모든 시간 때문에 기능을 키우면 2 초 만에 모든 브라운 사역자들에게 나를 감동 시켰습니다.
실제로 로컬 호스트와 동일한 결과를 가진 서버에서 테스트합니다.
이런 종류의 기능을 실행할 수 없거나 다른 방법으로 존재하는지에 대한 질문은 매번 새로 고침 페이지없이이 작업을 수행 할 수 없기 때문에 사용할 수 없습니다. 이 경우
Thank's에 새로 당신이 usleep()
을 사용하고 있는지 문제가
여기서 실제로 무엇을하려고합니까? 그'else' 블록을 입력하면 꽤 재귀 적으로 반복 될 것입니다. 재귀는 스택이 계속 성장할 것이기 때문에 이런 종류의 I/O를 기다리는 좋은 방법은 아니며, 결국 실패 할 것입니다. 또한 브라우저가 시간 초과되므로 모든 종류의 장기 실행 대기 프로세스가 브라우저에서 작동하지 않습니다 *. – David
네,하지만 스크립트를 기다리는 동안 스크립트를 기다리는 시간이 3 초 이상 필요합니다.이 스크립트는 새 파일을 생성하고 검색하는 데 필요하기 때문에 몇 시간 안에 문제가 발생합니다. – Francisco
기다리는 것이 필요하면 재귀가 아닌 루프에서 수행하십시오. 그렇게하면 아무런 이유없이 더 깊고 깊은 스택을 구축하는 것이 아닙니다. 그 외에도, 이와 같은 웹 응용 프로그램에서 * waiting *은 더 많은 문제를 일으킬 것입니다. 웹 응용 프로그램은 즉시 사용자에게 응답해야합니다. 백그라운드에서 실행중인 프로세스가있는 경우 완료되면 사용자에게 알립니다. WebSockets, AJAX 폴링 또는 특정 페이지가로드 될 때 알림을 확인하는 것만으로 인위적으로 대기하는 것이 좋습니다. – David