Development Tip

ini_set ( 'max_execution_time', 0) 나쁜 생각입니까?

yourdevel 2020. 12. 12. 12:34
반응형

ini_set ( 'max_execution_time', 0) 나쁜 생각입니까?


PHP 구성 변수 max_execution_time를 0 으로 설정하지 않는 좋은 이유가 있습니까?

동료가 최근에 다음을 추가 한 파일의 변경 사항을 체크인했습니다.

ini_set('max_execution_time', 0);

사용자에게 출력을 반환하기 전에 복잡한 처리를 한 페이지에 대해서는 기본값이 너무 낮습니다.

매뉴얼에는 설정의 주요 목적이 다음과 같다고 명시되어 있습니다.

잘못 작성된 스크립트가 서버를 묶는 것을 방지합니다.

그러나 또한 다음과 같이 설명합니다.

웹 서버에는 PHP 실행을 방해 할 수있는 다른 제한 시간 구성이있을 수 있습니다. Apache에는 Timeout 지시문이 있고 IIS에는 CGI 시간 제한 기능이 있습니다. 둘 다 기본값은 300 초입니다. 특정 세부 사항은 웹 서버 문서를 참조하십시오.

우리는 Apache에서 실행 중이므로 Timeout 설정이 적용됩니다. max_execution_time전역 적으로 0으로 설정하지 않는 이유가 있습니까? 주로 0으로 설정 하지 않을 때 간과하는 이점이 있는지 궁금 합니다.


당신을 짜증나게 할 위험이 있습니다.

당신은 잘못된 질문을하고 있습니다. 기본값에서 벗어나지 않는 이유는 필요하지 않지만 그 반대의 경우입니다. 그렇게 할 이유가 필요합니다. 타임 아웃은 웹 서버를 실행할 때 절대적으로 필수적이며 이유없이 해당 설정을 비활성화하는 것은 자체 타임 아웃 지시문이있는 웹 서버에서 실행되는 경우에도 본질적으로 모범 사례에 위배됩니다.

자, 진짜 대답은; 이 특별한 경우에는 전혀 문제가되지 않지만 별도의 시스템을 설정하는 것은 나쁜 습관입니다. 시간 초과가 다른 다른 서버에서 나중에 스크립트를 실행하면 어떻게됩니까? 결코 일어나지 않을 것이라고 안전하게 말할 수 있다면 좋지만, 좋은 관행은 대체로 가능성이없는 사건을 설명하고 완전히 다른 시스템의 설정과 기능을 불필요하게 함께 묶지 않는 것입니다. 이러한 원칙의 폐기는 소프트웨어 세계에서 많은 무의미한 비 호환성에 대한 책임이 있습니다. 거의 매번 예측할 수 없습니다.

나중에 웹 서버에서 제한 시간 설정 만 상속하는 다른 런타임 환경을 실행하도록 웹 서버를 설정하면 어떻게됩니까? 예를 들어 나중에 다른 대륙으로 이사 한 사람이 C ++로 작성한 15 년 된 CGI 프로그램이 필요하다고 가정 해 보겠습니다.이 프로그램은 웹 서버를 제외하고는 타임 아웃을 전혀 알지 못합니다. 이로 인해 시간 초과를 변경해야 할 수 있으며 PHP가 자체 대신 웹 서버의 시간 초과에 무의미하게 의존하기 때문에 PHP 스크립트에 문제가 발생할 수 있습니다. 또는 반대로 어떤 이유로 웹 서버 시간 초과가 더 적어야하지만 PHP는 여전히 더 높아야합니다.

웹 서버와 PHP는 서로 다른 역할을 담당하고 가능한 한 기능적으로 분리되어야하므로 PHP 기능을 웹 서버에 연결하는 것은 좋은 생각이 아닙니다. PHP 측이 더 많은 처리 시간을 필요로 할 때, 웹 서버의 다른 모든 것이 아니라 PHP와 관련이 있기 때문에 단순히 PHP의 설정이어야합니다.

요컨대, 필요가 없을 때 불필요하게 문제를 병합하는 것입니다.

마지막으로 'stillstanding'이 옳습니다. 적어도 오히려 사용해야합니다 set_time_limit()보다 ini_set().

이것이 너무 애용하고 짜증나 지 않았기를 바랍니다. 내가 말했듯이, 아마도 당신의 특정한 상황에서는 괜찮지 만 당신의 상황이 하나의 진정한 상황이라고 가정하지 않는 것이 좋습니다. 그게 다야. :)


이유는 0이 아닌 값을 가지기 때문입니다. 파서, 크롤러, 덤퍼, 스크립트 내보내기 및 가져 오기 등과 같은 긴 작업 스크립트의 경우 전역 적으로 짧게 유지하는 일반적인 관행입니다.

  1. 스크립트를 모르고 메모리를 소모하여 서버를 중지하고 다른 사람의 작업을 손상시킬 수 있습니다.
  2. 예를 들어 무한 루프가 발생한 곳에서 실수를 보지 않을 것이며 진단하기가 더 어려울 것입니다.
  3. 이러한 사이트는 실행 시간이 긴 페이지 요청시 단일 사용자가 쉽게 DoSed 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/4306605/is-ini-setmax-execution-time-0-a-bad-idea

반응형