2012-10-12 4 views
1

나는 당신이하는 일에 대한 시간을 추적하는 Trackosaur라는 앱을 만들고 있습니다. 나는 이것을 위해 Cake2 + jQuery1.8을 사용하고 있습니다. 내가 직면 한 문제는 세션 시간 초과와 관련이 있습니다. 나는 php ini를 통해 세션 타임 아웃 시간을 조정할 수 있습니다. 그러나 나는 정말로 오랜 기간 동안 (10 시간 이상) 세션을 유지해야합니다. 그래서 나는 session_start()를 사용하는 나의 UserController에서 사소한 함수에 ajax 호출을 설정했다.Cakephp는 세션을 오랜 시간 동안 계속 유지합니다.

JS

function keepAlive() 
{ 
     $.ajax({ 
      type: 'get', 
      url: '/users/keepalive' 
     }).done(function(data){}); 
} 

CAKE

public function keepalive() 
{ 
    session_start(); 
} 

AJAX 호출은 10 분마다 이루어진다. 이것이 세션을 유지하는 좋은 방법인지 확실하지 않습니다. session_start를 사용하는 것과는 반대로 Cake 자체에서 뭔가를 사용하여이 작업을 수행 할 수있는 더 좋은 방법이 있습니까?

시간 내 주셔서 감사합니다.

답변

2

세션 시간 초과 값을 변경할 수 있습니다.

CakePHP 1.3에서는 쉽게 사용할 수 있습니다. 이것을 찾아서 귀하의 가치 (10 시간 동안 36000)로 변경하십시오.

응용 프로그램/설정/core.php

/** 
* Session time out time (in seconds). 
* Actual value depends on 'Security.level' setting. 
*/ 
Configure::write('Session.timeout', '120'); 

CakePHP의 2에서이 줄을 찾아 세션 시간을 구성하는 방법에 대한 설명은 위의 주석 블록을 참조하십시오. 나는이 일을 스스로 할 필요가 없다. 그러나 나는 생각한다 :

Configure::write('Session', array(
    'defaults' => 'php', 
    'Session.timeout' => 36000 
)); 
+0

내가 이것을한다면, 10 분마다 나는 아약스 전화를 제거 할 수 있을까? – walmik

+0

예, 세션이 오랫동안 지속되도록 CakePHP를 설정하면 매우 실용적이지 않습니다. 기본적으로 세션은 (메모리에서) 2 시간으로 설정되어 있으므로 세션이 10 분이 경과 한 후에 항상 시간이 초과되면 어딘가에 문제가있을 수 있습니다. – BadHorsie

관련 문제