Podczas przechowywania sesji w bazie danych poprzezCodeIgniter limit rozmiaru sesja
$config['sess_use_database'] = TRUE;
Czy rozmiar danych ograniczony do wielkości pola User_Data który to tekst ...? Nie 4kb jak normalny plik cookie.
Podczas przechowywania sesji w bazie danych poprzezCodeIgniter limit rozmiaru sesja
$config['sess_use_database'] = TRUE;
Czy rozmiar danych ograniczony do wielkości pola User_Data który to tekst ...? Nie 4kb jak normalny plik cookie.
Aby dokładniej wyjaśnić powyższy komentarz, po wybraniu zapisu danych sesji w bazie danych, CodeIgniter nie ustawia pliku cookie (oczywiście innego niż identyfikator sesji), ale zapisuje wszystkie informacje, które ustawiłby w pliku cookie w bazie danych.
Jeśli spojrzeć na sess_write
w klasie Session
znajduje się w ./system/libraries/
, jeśli umożliwiły korzystanie z bazy danych, zobaczysz że serializes dane używając serialize
i zapisuje je bezpośrednio do bazy danych. Nie ma ograniczenia na długość nałożonego przez CodeIgniter podczas zapisywania do bazy danych.
Dla Twojej wygody, oto link do kodu źródłowego: https://bitbucket.org/ellislab/codeigniter/src/fe2247a927ab/system/libraries/Session.php#cl-252.
Jedyne ograniczenie jest ustalane przez pole, którego użyłeś do zapisania danych w bazie danych. Aby uzyskać więcej informacji na temat wymagań dotyczących przechowywania danych w MySQL, przeczytaj this.
Tak więc sesja o wartości około 50 kB nie spowodowałaby problemów ze specyfikacją CI? Występują problemy, gdy moje dane sesji były wyprowadzane w programie profilującym, ale nie były dostępne w kontrolerze. Wyłączyłem tę bibliotekę sesji http://codeigniter.com/wiki/Session_Hybrid/, a problem został rozwiązany. – ringerce
@ringerce - nie powinno być problemu. Sama sesja jest w istocie kolejną tablicą, która staje się serializowana i niezsrywalizowana podczas odczytu lub zapisywania (chyba że używasz plików cookie). Przechowuję obiekty [Doctrine] (http://www.doctrine-project.org/) w mojej sesji, które wydają się dość duże bez żadnych problemów. –
Myślę, że to odpowiedź na twoje pytanie. z kodu klasy:
// Are we saving custom data to the DB? If not, all we do is update the cookie
if ($this->sess_use_database === FALSE)
{
$this->_set_cookie();
return;
}
nawet komentarze pochodzą z samej klasy. więc aktualizuje plik cookie, jeśli nie korzysta z bazy danych.
znalazłem taką samą „wielkość graniczna” problem nawet mam ci_session
tabelę do przechowywania
po prostu zmienić na typ danych user_data = longtext
i mój problem rozwiązać
chociaż rozmiar sesji jest ograniczona do wielkości longtext NIE NIELIMITOWANY
Nie wiem na pewno. Ale jeśli tak, to byłoby bardzo głupie. –
Jeśli zapiszesz w bazie danych, dane rzeczywiście są ograniczone wielkością pola, w którym zapisujesz dane. Więc jeśli używasz "TEKSTU", powinieneś mieć dużo wolnego miejsca. –
Jeśli spojrzysz na linię # 293 pliku session.php, nadal ustawia plik cookie. – ringerce