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이 아닌 값을 가지기 때문입니다. 파서, 크롤러, 덤퍼, 스크립트 내보내기 및 가져 오기 등과 같은 긴 작업 스크립트의 경우 전역 적으로 짧게 유지하는 일반적인 관행입니다.
- 스크립트를 모르고 메모리를 소모하여 서버를 중지하고 다른 사람의 작업을 손상시킬 수 있습니다.
- 예를 들어 무한 루프가 발생한 곳에서 실수를 보지 않을 것이며 진단하기가 더 어려울 것입니다.
- 이러한 사이트는 실행 시간이 긴 페이지 요청시 단일 사용자가 쉽게 DoSed 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/4306605/is-ini-setmax-execution-time-0-a-bad-idea
'Development Tip' 카테고리의 다른 글
Python void 반환 유형 주석 (0) | 2020.12.12 |
---|---|
배치 파일-오류 처리 (0) | 2020.12.12 |
IP 주소를 대상으로하는 Powershell 원격 (0) | 2020.12.12 |
android : 화면 켜고 끄기를위한 방송 수신기 (0) | 2020.12.12 |
자바 스크립트 사용 : 탭이나 창에 대한 기록이없는 경우 사용자를 링크로 연결하는 '뒤로'링크를 만드는 방법은 무엇입니까? (0) | 2020.12.12 |