2014-09-01 1 views
0

보고서를 생성하기 위해 오랫동안 실행중인 Laravel 프로세스가 있습니다. 긴 기간을 선택하면 약 100 초 후에 같은 URL로 리디렉션됩니다. 코드를 다음과 같이 변경했습니다.Laravel Timeout Issue

set_time_limit(20); 
while(1) { 
    $var = 3 + 4/11; 
} 

이 코드는 20 초 동안 실행 된 다음 동일한 URL로 리디렉션됩니다. 2 개의 경로, GET 경로 및 POST 경로가 있다고 덧붙이고 싶습니다. 시간 초과는 POST 경로에서 발생합니다.

나는

set_time_limit(0); 

을 시도했지만 그것은 변화를하지 않았다. 나는 디버그를 켜 놓았지만 아무 것도하지 않았다. 어떤 도움을 주셔서 감사합니다.

편집 : 나는 PHP 5.4.x를 안전 모드로 실행하고 있습니다. EDIT : 컨트롤러는 http://laravel.io/bin/WVdVz입니다. 여기에 마지막 코드 인 http://laravel.io/bin/aa2GW이 있습니다. EDIT : 오류 처리 라이브러리 Whoops가 시간 초과 오류를 캐치하고 기록합니다. 내 기록은 깨끗합니다. 이것은 Laravel이 내 _download 함수 후 응답을 처리하는 방법과 관련이 있습니다 ...

+0

경우에 따라 컨트롤러가 의도적으로 같은 페이지로 리디렉션을 처리하고 있습니까? 모든 디버그 입력? 시간 제한과 관련이 있으며 메모리 제한과 관련이 없다고 확신합니까? 그냥 임의의 생각을 던지고 ... – alou

+0

@alou 내 컨트롤러는 XLS 스프레드 시트 다운로드를 생성해야합니다. 컨트롤러가 수행하는 마지막 작업은 http://laravel.io/bin/aa2GW입니다. 컨트롤러는 "return;"으로 끝납니다. 나는 640MB 메모리를 부딪히는 시도했다. 어쨌든 GET을 사용하여 동일한 URL로 리다이렉트한다는 것은 흥미 롭다. –

답변

1

많은 디버깅 후, 나는 알아 냈습니다. 아파치가 시간 초과되었습니다. 외관상으로는, 아파치가 타임 아웃 할 때, 그것은 500 응답 코드를 던집니다. 분명히 (다시) 브라우저가 POST 요청에 대해 500 오류 코드를 얻으면이를 GET 요청으로 다시 보냅니다. 여기에 자세한 내용을 적었습니다. http://blog.voltampmedia.com/2014/09/02/php-apache-timeouts-post-requests/

분명히 Laravel 문제가 아닙니다. Whoops 라이브러리가 시간 초과 오류를 캡처한다는 점에 유의하십시오.