아파치 2.2 PHP 5.3 MySQL 5.5 애플리케이션이 있습니다. page1.php에있는 양식은 사용자 입력을 허용합니다. 값은 GET을 사용하여 page2.php에 전달됩니다. page2.php의 PHP 스크립트는 MySQL 쿼리를 실행하고 결과를 보여줍니다. 사용자 입력 매개 변수에 따라 쿼리는 3에서 900 초까지 실행될 수 있습니다.아파치에서 PHP로 실행되는 장기 실행 MySQL 쿼리 : 브라우저가 결과를 출력하지 않고 "데이터 전송 중 ..."
내 테스트에서 < 300 초를 실행하는 쿼리의 결과는 OK로 표시됩니다. 더 이상 실행되는 쿼리는 서버에서 정상적으로 완료됩니다 (CPU로드가 500 초 후에 90 %에서 0 %로 변경됨)하지만 브라우저가 결과를 표시하지 않고 "my.host.org에서 데이터 전송"상태 표시 줄에 계속 표시됩니다. .. "
현재 동일한 브라우저 (Firefox)의 새로운 인스턴스에서 응용 프로그램의 임의 페이지를 열려고 할 때 탭 헤더의"연결 중 ... "이라고 표시되고"대기 중 my.host .org ... "상태 표시 줄에 있습니다. 현재 다른 브라우저 (IE)에서 내 응용 프로그램의 페이지를 여는 것은 괜찮습니다.
아래 설정은 지금까지 변경되었지만 도움이되지 않았습니다. 어떤 아이디어라도 도움이 될 것입니다. 고맙습니다.
apache2.conf:
Timeout 300 -> 1800
php.ini:
user_ini.cache_ttl = 300 -> 1800
max_execution_time = 30 -> 1800
default_socket_timeout = 60 -> 1800
mysql.connect_timeout = 60 -> 1800
page2.php:
ignore_user_abort(1);
왜 쿼리가 오랫동안 실행되고 있으며 부득이한 경우 대화식으로 시도하는 이유는 무엇입니까? –
당신은 fcgi로 PHP를 실행하고 있습니까? 변경할 수있는 설정이 있습니다. – Krynble
나는 PHP를 Apache 모듈로 Ubuntu 12.04에서 실행 중입니다. 가끔씩 내 응용 프로그램을 사용하는 연구 데이터베이스와 여러 연구자가 있습니다. 응용 프로그램은 많은 임시 테이블을 만들고 데이터를 다시 집계합니다. 아마도 응용 프로그램을 재 설계하고 최적화하여 시간을 절약 할 수는 있지만 지금은 우리가 감당할 수없는 주요 프로젝트가 될 것입니다. 연구 또는 통계 응용 프로그램에서 오랜 시간 동안 실행하는 것은 흔한 일입니다. 장기 실행 시간이 GIU에서 벗어나는 이유라고 생각하지 않습니다. – user1293929