2009-09-30 4 views
1

나는 현재의 일기 예보를로드 할 수있는 PHP 스크립트를 만들려고하고 있으며, 입력을 소화하기 위해 약간의 XML 사전 처리를 사용하지만, 꽤 자주 액세스되어 다시로드됩니다. 문제는 현재 호스트에서 시작됩니다. 그렇다면 스크립트가 처리하는 처리량을 제한하는 이유를 이해합니다.어떻게 PHP 스크립트의 프로세서 풋 프린트를 줄일 수 있습니까?

현재 실행을 위해 전체 프로세스가 소요되며 실행 당 약 3 초입니다. 나는 12로 제한되어 있지만, 꽤 많은 핑 소리가납니다.

제 질문은 여러분이 5 분 전에 이미 수행 한 작업을 사전 처리 할 필요가 없도록 스크립트의 출력을 캐싱하는 데 사용할 수있는 방법이 무엇이 있는지 알려주는 것입니다. 날씨이므로 2 시간까지 시간차가 있습니다.

나는 php에 대해서도 잘 알고 있으므로 걱정하지 마십시오.

은 ~ 대단히 감사합니다, 조니 : D

답변

2

당신은 일기 예보 데이터를 생성 한 후 바로 표시 할 cronjob에를 실행할 수 ... 사용할 수 있지만, 당신이 그것을 말할 어렵다하고있는 프로세스의 어떤 종류의 보지 않고있다 캐시에서 모든 것. APC를 사용하여 항상 메모리에로드되고 (다른 모든 추가 된 이점).

+0

아, 감사 : 아니면 같은과 함께 자신의 롤 수 있습니다 D – JonnyLitt

+1

그렇지 않으면, PHP가 유일한 대안은 캐시 파일을 반환하거나 후에 재생하는'filemtime()를'사용할 수 기간. –

0

당신이하고있는 처리의 종류를 볼 수있는 코드가 필요합니다. xdebug를 사용하여 코드를 더 잘 최적화하는 것을 고려하십시오. 또한 AB와 같은 벤치마킹 도구를 사용하여 서버에서 처리 할 수있는 프로세스 수를 확인할 수도 있습니다.

는 여러 가지 캐싱 메커니즘은

0

를 3 초 이미 요구로, 어떤 차가운 당신이 '입력'와 어떤 형식이 입력에 말했다의 처리 방식을 볼 수 좋은 것, 매우 긴 실행 시간입니다.

에 관한 신속하고 더러운 기사 파일에 스크립트 중 캐싱은 여기있다 :

http://codestips.com/?p=153

1

젠드 프레임 워크는 여러 백엔드 (파일, memcached와, APD)와 Zend_Cache 객체를 제공합니다. 아마 일하는 것이

$cachFile = "/path/to/cache/file"; 
$ttl = 60; // 60 second time to live 
if (!file_exists($cacheFile) || time()-filemtime($cacheFile) > $ttl) { 
    $data = getWeatherData(); // Go off and get the data 
    file_put_contents(serialize($cacheFile), $data); 
} else { 
    $data = unserialize(file_get_contents($cacheFile)); 
} 
+0

예, 텍스트 형식의 일반 미디어를 사용하여 출력을 캐시 유형 개체로 저장 한 다음 각 실행이 끝날 때마다 업데이트 할 수있는 작업을 수행 할 수도 있습니다. – JonnyLitt

+0

또는 파일 전체를 직렬화 할 수 있으며 일치시킬 답변을 편집했습니다. – Neel

관련 문제