문제

나는 두 가지 질문이 있습니다 sleep() PHP의 기능 :

  1. 수면 시간이 내 PHP 스크립트의 최대 실행 시간 제한에 영향을 미칩니 까? 때로는 PHP가 "최대 실행 시간 30 초를 초과하는"메시지를 보여줍니다. 내가 사용하면이 메시지가 나타납니다 sleep(31)?

  2. 사용할 때 위험이 있습니까? sleep()기능? 많은 CPU 성능이 소요됩니까?

도움이 되었습니까?

해결책

당신은 그것을 시도하고, 최대 실행 시간보다 더 잠을자는 스크립트 만 있으면됩니다.

<?php
  sleep(ini_get('max_execution_time') + 10);
?>

스포일러 : Linux에서는 수면 시간이 무시되지만 Windows에서는 실행 시간으로 계산됩니다.

다른 팁

수면 ()과 같은 시스템 호출이 아닌 스크립트 시간에만 영향을 미칩니다. Windows의 Sleep ()가 포함 된 버그가있는 것 같습니다. 최대 실행 시간은 CPU 시간이나 그와 비슷한 것이 아니라 실시간입니다. 그러나 변경할 수 있습니다.

  • max_execution_time php.ini의 지침. 이것은 글로벌 설정입니다.
  • 사용 ini_set () 위의 지침으로. 이것은 현재 실행중인 스크립트에 대해서만 해당 실행을 위해서만 변경됩니다.
  • set_time_limit (): 또한 지역 변화.

마지막 두 가지의 차이에 관해서는 Max_Execution_time이 고정 된 수량이라고 생각합니다. 달리기:

ini_set('max_execution_time', 60);

스크립트를 60 초로 제한합니다. 20 초 후에 전화 :

set_time_limit(60);

스크립트는 이제 20 + 60 = 80 초로 제한됩니다.

로부터 php sleep () 페이지,이 사용자가 조정 된 메모가 있습니다.

참고 : SET_TIME_LIMIT () 함수 및 구성 지시 사항 MAX_EXECUTION_TIME은 스크립트 자체의 실행 시간에만 영향을 미칩니다. System ()을 사용하여 시스템 호출과 같이 스크립트 실행 밖에서 발생하는 활동에 소비되는 시간, Sleep () 함수, 데이터베이스 쿼리 등은 스크립트가 실행중인 최대 시간을 결정할 때 포함되지 않습니다.

다른 사람들은 이미 Sleep () 및 PHP 스크립트 실행 시간 제한의 기본 사항을 다루었지만 실제로 긴 수면 기간을 사용할 때 다른 위험을 알고 있어야합니다.

일반적으로 브라우저가 요청을 서버로 보내고 서버에서 데이터를 수신하지 않으면 연결이 시간을 초과 할 수 있습니다. 이 시간 제한은 브라우저의 구성에 따라 다르지만 IE7은 기본값이 30 초이고 반면 Firefox의 기본값은 115 초입니다-당신은 다음으로 가서 Firefox에서 자신의 구성을 확인할 수 있습니다. 정보 : 구성 그리고 필터링 Network.http.keep-alive.timeout (시간 제한은 초 안에 지정됩니다).

편집 : Network.http.keep-alive.timeout 및 browser.urlbar.search.timeout의 단위가 혼합되었습니다. 실제로는 10 분의 1 초가 아니라 몇 초입니다.

a) 예, 시간 제한으로 계산됩니다 (수면 (31)은 오류가 발생합니다).

b) CPU 성능의 원가 계산과 반대입니다. 다른 응용 프로그램에서 CPU를 사용할 수 있습니다 (응용 프로그램이 잠들 때 해당 응용 프로그램의 CPU 사용량은 0%가 가까워집니다). 사용자로부터 시간을 빼앗는 것 외에도, 나는 이것을 사용하는 위험을 실제로 생각할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top