2012-06-15 3 views
0

서버에서 가능한 한 빨리 반환해야하는 응용 프로그램의 일부가 있으며 지금은 계산의 일부가 아닌 0.5 초에서 1.8 초 사이에 있습니다. 내가 말하고자하는 것은 (마이크로 시간을 사용하여) 프로세스의 각 부분을 타임 아웃하고 mysql 호출과 계산이 매번 0.2 초 미만이 걸리지 만 반환과 프린트는 추가 초를 추가한다는 것입니다. 지금은 받아 들일 수 없을 정도로 느리기 때문에 가능한 한 빨리이 작업을 수행하려면 어떻게해야합니까?PHP 함수 반환/인쇄 속도

생각할 수있는 두 가지가 있습니다. 데이터가 함수 내부에 작성되어 큰 배열이 값으로 반환되므로 반환 대신 간단하게 인쇄하는 것이 더 빠릅니다. 두 번째 것은 PHP 인쇄 버퍼에 문제가 있다고 생각합니다. 내가 더 매끄러운 덩어리로 인쇄 할 텍스트를 쪼개 놓을 때 나는 프린트 버퍼가 가득차 있다고 생각하는 약 0.5-1.5 초의 여분의 시간을 모두 감당할 수 있다는 것을 제외하고는 즉시 (~ 0.00002 초) 각 덩어리가 인쇄되는 것을 본다. 추가 작업을해야합니다. 이 문제를 해결할 방법이 있습니까?

몇 가지 세부 사항 : 인쇄되는 텍스트의 크기는 약 150Kb이며, 플러시 또는 ob_ 기능을 사용하지 않지만 차이점을 보이지 않는 실험을 수행했으며 memcached를 사용하지 않습니다. . 에코는 명령문이며 함수 호출이 아니기 때문에 인쇄보다 빠르지 만 차이점이 얼마나 큰지 알 수 있습니까? print는 텍스트를 반환하기 때문에 큰 텍스트는 더 오래 인쇄됩니까?

+0

예제를 제공해 주시겠습니까? 문제가되지 않는 것처럼 보이기 때문에 모든 데이터베이스 항목과 계산을 수행하지 않고 일부 문자열을 하드 코딩하고 사용자에게 보내는 방법과 느린 속도로 시작하는 방법을 보여줍니다. 우리는 테스트를 반복하고, 같은 것을 볼 수 있는지 확인합니다. 이런 일이 어떻게 진행되고 있는지 말하기가 어렵습니다. – Nanne

+0

PHP 엔진에서 약간의 제한이 있습니까? 메모리 사용을 늘리려고 했습니까? (나는 그 텍스트가 얼마나 큰지 궁금하다.) – Anonymous

+0

나는 실제 계산을 꺼내서 그걸 인쇄하고 여전히 같은 시간 문제를 가지고있다. 150KB의 텍스트가 인쇄 된 것처럼 많은 텍스트입니다. 나는 기억을 일으켰지 만 그것은 도움이되지 못했다. 나는 그것을 더 높이려고 할 수있다 ... – hackartist

답변

2

하지만 반환 및 인쇄이 매우 이상한 것 같다 의견에 따라, 추가로 두 번째

를 추가합니다. 응용 프로그램의 성격을 감안할 때 내 생각은 다음과 같습니다

데이터는 함수 내부에 내장되어 큰 배열 값이 같은

왜 defering하는 출력으로 반환된다? 대용량 배열은 PHP에서 큰 성능 문제입니다 (NB Dan Lee : 숫자와 결합 형). 하지만 요소를 추가하거나 개별 요소를 참조하는 경우가 발생합니다. 배열을 이동하는 것은 문제가되지 않습니다.

왜 데이터를 출력 버퍼에 먼저 보내지 않습니까?

나는 인쇄 버퍼가 가득

가 매우 어려울 것 같다 같아요.

내가위한 ob_start 사용하지 않고 세척

그런 다음 이렇게 않음 - GZ 핸들러와 기본 설정에 대해.