ini_set('max_execution_time', 0)이 나쁜 생각입니까?
PHP 구성 변수를 0으로 설정하지 않는 좋은 이유가 있습니까?
동료가 최근 다음을 추가한 파일의 변경 내용을 체크인했습니다.
ini_set('max_execution_time', 0);
출력을 사용자에게 반환하기 전에 복잡한 처리를 수행한 페이지에 비해 기본값이 너무 낮았습니다.
설명서에 따르면 설정의 주요 목적은 다음과 같습니다.
제대로 작성되지 않은 스크립트가 서버를 연결하지 못하도록 합니다.
하지만 다음과 같은 말도 계속됩니다.
웹 서버에 PHP 실행을 방해할 수 있는 다른 시간 초과 구성이 있을 수 있습니다.Apache에는 시간 초과 지시어가 있고 IIS에는 CGI 시간 초과 기능이 있습니다.둘 다 기본값은 300초입니다.자세한 내용은 웹 서버 설명서를 참조하십시오.
Apache에서 실행 중이므로 시간 초과 설정이 적용됩니다.설정하지 않을 이유가 있습니까?max_execution_time
전 세계적으로 0으로?주로 0으로 설정하지 않을 때 간과하고 있는 혜택이 있는지 궁금합니다.
당신을 짜증나게 할 위험을 무릅쓰고;
당신은 잘못된 질문을 하고 있습니다.기본값에서 벗어나지 않고 그 반대의 이유가 필요합니다.당신은 그렇게 할 이유가 필요합니다.시간 초과는 웹 서버를 실행할 때 절대적으로 중요하며, 시간 초과 지시가 있는 웹 서버에서 실행되는 경우에도 이유 없이 해당 설정을 비활성화하는 것은 기본적으로 모범 사례에 위배됩니다.
이제, 진짜 답에 대해서는, 아마도 이 특정한 경우에는 전혀 문제가 되지 않을 것입니다. 하지만 별도의 시스템을 설정하는 것은 나쁜 관행입니다.나중에 스크립트가 다른 시간 초과 서버에서 실행되면 어떻게 됩니까?그런 일이 절대 일어나지 않을 것이라고 안전하게 말할 수 있다면, 좋습니다. 하지만 모범 사례는 대체로 가능성이 없어 보이는 이벤트를 설명하는 것이며 전혀 다른 시스템의 설정과 기능을 불필요하게 결합하지 않는 것입니다.이러한 원칙의 폐기는 소프트웨어 세계에서 많은 무의미한 비호환성에 책임이 있습니다.거의 매번, 그것들은 예상치 못한 것입니다.
나중에 웹 서버가 웹 서버의 시간 초과 설정만 상속하는 다른 런타임 환경을 실행하도록 설정되면 어떻게 됩니까?예를 들어, 나중에 다른 대륙으로 이동한 사람이 C++로 작성한 15년 된 CGI 프로그램이 필요하다고 가정해 보겠습니다. CGI 프로그램은 웹 서버의 프로그램 외에는 시간 제한이 없습니다.이로 인해 시간 제한을 변경해야 할 수 있으며 PHP가 자신의 시간 제한 대신 웹 서버의 시간 제한에 무의미하게 의존하기 때문에 PHP 스크립트에 문제가 발생할 수 있습니다.또는 반대로, 어떤 이유에서인지 웹 서버 시간 제한이 덜 필요하지만, PHP는 여전히 더 높은 시간 제한이 필요합니다.
PHP 기능을 웹 서버에 연결하는 것은 좋은 생각이 아닙니다. 왜냐하면 웹 서버와 PHP는 서로 다른 역할을 담당하며 가능한 한 기능적으로 분리되어야 하기 때문입니다.PHP 쪽에서 처리 시간이 더 필요할 때는 웹 서버의 다른 모든 것이 아니라 PHP와 관련이 있기 때문에 PHP의 설정이어야 합니다.
간단히 말해서, 그것은 필요가 없을 때 불필요하게 문제를 혼동하는 것입니다.
마지막으로 중요한 것은 '여전히 서 있다'는 것이 옳다는 것입니다; 당신은 적어도 사용해야 합니다.set_time_limit()
ini_set()
.
이것이 너무 거만하고 짜증나는 일이 아니길 바랍니다.제가 말씀드린 것처럼, 아마도 독자 분의 구체적인 상황에서는 괜찮겠지만 독자 분의 상황을 하나의 진실한 상황으로 가정하지 않는 것이 좋은 관행입니다.이상입니다. :)
이유는 0이 아닌 다른 값을 가지기 위해서입니다.일반적으로 파서, 크롤러, 덤프, 스크립트 내보내기 및 가져오기 등과 같이 글로벌하게 짧고 장시간 작업하는 스크립트가 필요합니다.
- 자신도 모르는 사이에 메모리를 사용하여 다른 사용자의 서버 손상 작업을 중지할 수 있습니다.
- 예를 들어 무한 루프가 발생한 경우 실수를 볼 수 없으며 진단하기가 더 어려울 것입니다.
- 이러한 사이트는 실행 시간이 긴 페이지를 요청할 때 한 명의 사용자가 쉽게 DoS할 수 있습니다.
언급URL : https://stackoverflow.com/questions/4306605/is-ini-setmax-execution-time-0-a-bad-idea
'programing' 카테고리의 다른 글
날짜에서 연도를 추출하기 위한 SQL 조회 (0) | 2023.07.24 |
---|---|
numpy 배열에서 모든 NaN 값의 인덱스 목록을 가져오는 방법은 무엇입니까? (0) | 2023.07.24 |
Python 클래스 파일 이름도 camelCase로 해야 합니까? (0) | 2023.07.24 |
R에서 "<-"(범위 지정)을 어떻게 사용합니까? (0) | 2023.07.19 |
Python에서 두 목록이 순환적으로 동일한지 확인하는 방법 (0) | 2023.07.19 |