Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CI][CodeIgniter]problem z plikami sesji w Codeigniter 3
Forum PHP.pl > Forum > PHP > Frameworki
irek28061988
Witam,
Jestem początkujący z frameworkiem Codeigniter 3 i mam problem z sesją zapisywaną w plikach.

Przykładowy kontroler w którym korzystam z sesji ma następujący kod:
  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3.  
  4. class Strona extends CI_Controller {
  5.  
  6. public function index(){
  7.  
  8. echo "Strona ogólnodostępna </br></br>";
  9. echo anchor('strona/tajne', 'tajne dane');
  10.  
  11. }
  12.  
  13.  
  14. public function tajne(){
  15.  
  16. if(isset($_SESSION['loggedin'])){
  17.  
  18. echo "Jesteś zalogowany - tajne dane </br></br>";
  19.  
  20. echo anchor('strona', 'Strona ogólnodostępna');
  21. echo " - ";
  22. echo anchor('login/logout', 'wyloguj się');
  23.  
  24. } else {
  25.  
  26. echo "musisz się zalogować </br></br>";
  27.  
  28. echo anchor('strona', 'Strona ogólnodostępna');
  29. echo " - ";
  30. echo anchor('login', 'zaloguj się');
  31.  
  32. }
  33.  
  34. }
  35.  
  36. }
  37.  


  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3.  
  4. class Login extends CI_Controller {
  5.  
  6. public function index(){
  7.  
  8. $_SESSION['loggedin'] = true;
  9. redirect('strona/tajne');
  10.  
  11. }
  12.  
  13.  
  14. public function logout(){
  15.  
  16. redirect('strona/tajne');
  17.  
  18. }
  19. }
  20.  


Konfiguracja sesji jest następująca:
  1. $config['sess_driver'] = 'files';
  2. $config['sess_cookie_name'] = 'ci_session';
  3. $config['sess_expiration'] = 7200;
  4. $config['sess_save_path'] = APPPATH . 'cache/sessions';
  5. $config['sess_match_ip'] = FALSE;
  6. $config['sess_time_to_update'] = 300;
  7. $config['sess_regenerate_destroy'] = FALSE;


Jak widać pliki sesji mają być zapisywane w katalogu "application/cache/sessions" na serwerze co też się dzieje, problem z tym że z czasem w tym katalogu zbiera się dosłownie setki plików z danymi starej już nieaktualnej sesji.
Jak zrobić żeby pliki starej sesji się usuwały automatycznie i nie zalegały na serwerze?
Proszę o pomoc
Pyton_000
http://forum.codeigniter.com/thread-1226.html
irek28061988
dziękuję za odpowiedź ale i tak to nie działa

w konfiguracji codeigniter'a mam ustawione
$config['sess_expiration'] = 7200;

natomiast w php.ini na lokalnym serwerze mam ustawione
session.gc_maxlifetime = 1440

i niestety starych plików sesji nie usuwa.
Można coś jeszcze zrobić żeby Garbage Collector działał i usuwał stare pliki sesji?
Pyton_000
Możesz wymusić http://php.net/manual/en/function.gc-collect-cycles.php
irek28061988
pewnie mnie zbesztasz za to pytanie ale mógłbyś dać jakiś przykład odnośnie tego mojego kodu jak wymusić użycie tego Garbage Collector'a ?
Pyton_000
Macki mi opadły...

Wstaw sobie gc_collect_cycles() w logowanie albo wylogowanie
irek28061988
Dzięki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.