주 서버에 session_start()
에 문제가 있습니다. 처음으로 페이지를로드 할 때 요청을 완료하는 데 1 초도 걸리지 않습니다. 약 12-15 초 동안 기다린 다음 페이지를 새로 고침하면로드 시간이 동일 해집니다. 그러나 초기 로딩 후 3-5 초 후에 예를 들어 페이지를 새로 고치려고하면 서버 응답 시간이 10 초가됩니다.function session_start() 문제 (천천히 작동)
내 스크립트에서 병목 현상을 정의하기 위해 몇 가지 테스트를 수행했으며 그 함수는 session_start()
이 9.8 초 동안 실행된다는 것을 알았습니다. PEAR 패키지 HTTP_Session2를 사용하고 있습니다. 그 문제는 HTTP_Session2::start()
기능에,
//First loading (13:34:35)
HTTP_useCookies(1) -> 0.00038
HTTP_start(2) -> 0.00077
HTTP_setExpire(3) -> 0.00090
// Second loading (13:34:39)(4 seconds later)
HTTP_useCookies(1) -> 0.00029
HTTP_start(2) -> <<<<<<10.80752>>>>>
HTTP_setExpire(3) -> <<<<<<10.80780>>>>>
//Third loading (13:34:56)
HTTP_useCookies(1) -> 0.00041
HTTP_start(2) -> 0.00071
HTTP_setExpire(3) -> 0.00083
그래서 내가 찾은 : 로그의
HTTP_Session2::useCookies(SESSION_USE_COOKIE);
/* Next line was added to make logging of execution time possible. */
self::writeToFile('HTTP_useCookies(1) -> '.self::getWorkTime());
HTTP_Session2::start("SID");
self::writeToFile('HTTP_start(2) -> '.self::getWorkTime());
HTTP_Session2::setExpire(time() + SESSION_EXPIRE);
self::writeToFile('HTTP_setExpire(3) -> '.self::getWorkTime());
텍스트 : 여기에 코드입니다. 함수 코드 HTTP_Session2::start()
:
public function start($name = 'SessionID', $id = null)
{
self::name($name);
if (is_null(self::detectID())) {
if ($id) {
self::id($id);
} else {
self::id(uniqid(dechex(rand())));
}
}
session_start();
if (!isset($_SESSION['__HTTP_Session2_Info'])) {
$_SESSION['__HTTP_Session2_Info'] = self::STARTED;
} else {
$_SESSION['__HTTP_Session2_Info'] = self::CONTINUED;
}
}
무엇이 시간 지연의 원인인지 이해할 수 없습니다. 서버에 잘못된 Apache 설정이있을 수 있습니다. 또는 세션 정보가 포함 된 파일에 '잠금 장치'가 있습니다.
어쩌면 누군가가 이미 이러한 문제를 겪고 있으며이를 해결하는 데 도움이 될 수 있습니다.
관련 http://stackoverflow.com/q/13772074/168034 – phunehehe